| From: | Heikki Linnakangas <hlinnaka(at)iki(dot)fi> |
|---|---|
| To: | Paal Christof <Christof(dot)Paal(at)ncia(dot)nato(dot)int>, "pgsql-odbc(at)postgresql(dot)org" <pgsql-odbc(at)postgresql(dot)org> |
| Subject: | Re: Crash in 64 bit ODBC driver when using bookmarks |
| Date: | 2018-10-21 20:42:37 |
| Message-ID: | 63d13cfb-3b15-c3ca-14ae-adabaec1b4df@iki.fi |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-odbc |
On 19/10/2018 15:16, Paal Christof wrote:
> I think I have found a bug in the PostgreSQL ODBC driver (of which I am using the latest version 10_03).
> I am using SQLBindCol to bind a bookmark column of type SQL_C_VARBOOKMARK.
>
> Everything works perfectly when I compile my application in 32 bit mode and use the 32 bit ODBC driver.
> With the 64 bit driver I get an instant crash (memory exception).
> With logging turned on, the last entry in the mylog is the following:
> [SC_Create_bookmark]3133: entering type=-2 buflen=64 buf=000000000C6AF268
>
> I can also attach a debugger and the crash happens at the following line:
> memcpy(CALC_BOOKMARK_ADDR(bookmark, offset, bind_size, bind_row), &pg_bm, cvtlen);
>
> At that time the value of the bookmark variable is: bookmark = 0x0000000000000001 {buflen=??? buffer=??? used=??? ...}, screenshot attached.
> Although it received good values when the function was called (as seen in the log), the memory got corrupted in between and it is no longer a valid pointer.
> I assume this is because something is writing a 64 bit value into a buffer which is only made for a 32 bit integer.
Can you provide a self-contained test case? There is a test case that
uses SQLBindCol with SQL_C_VARBOOKMARK, in the regression test suite,
and it's been working fine:
If you could reproduce the crash with some changes to that test program,
that would help a lot.
- Heikki
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Michael Paquier | 2018-10-29 04:01:27 | Re: Log file |
| Previous Message | Thiemo Kellner | 2018-10-20 06:42:44 | Re: What is the problem with this code? |