Thread: BUG #1815: ECPGdebug causes crash on Windows XP
The following bug has been logged online: Bug reference: 1815 Logged by: joshua masiko Email address: joshua_masiko@yahoo.com PostgreSQL version: 8.0.3 Operating system: Windows XP SP2 Description: ECPGdebug causes crash on Windows XP Details: /* Processed by ecpg (4.0.1) */ /* These include files are added by the preprocessor */ #include <ecpgtype.h> #include <ecpglib.h> #include <ecpgerrno.h> #include <sqlca.h> /* End of automatic include section */ #line 1 "main.pgc" #include <stdio.h> int main(int argc,char **argv) { ECPGdebug(1,stderr); return 0; } Running the above program results in a reproducible crash on Windows XP Environment Windows XP SP2 Visual Studio SP5 Postgresql 8.0.3 Any ideas??
Make sure the lib directory is in the PATH. I tested it in MinGW. $ ecpg main.pgc $ gcc main.c -I../include -L../lib -lecpg $ export PATH=$PATH:"/c/Program Files/PostgreSQL/8.0/lib" $ ./a.exe [1772]: ECPGdebug: set to 1 ""joshua masiko"" <joshua_masiko@yahoo.com> wrote news:20050809194027.A1C76F0B08@svr2.postgresql.org... > > The following bug has been logged online: > > Bug reference: 1815 > Logged by: joshua masiko > Email address: joshua_masiko@yahoo.com > PostgreSQL version: 8.0.3 > Operating system: Windows XP SP2 > Description: ECPGdebug causes crash on Windows XP > Details: > > /* Processed by ecpg (4.0.1) */ > /* These include files are added by the preprocessor */ > #include <ecpgtype.h> > #include <ecpglib.h> > #include <ecpgerrno.h> > #include <sqlca.h> > /* End of automatic include section */ > #line 1 "main.pgc" > #include <stdio.h> > > int main(int argc,char **argv) > { > ECPGdebug(1,stderr); > return 0; > } > > Running the above program results in a reproducible crash on Windows XP > > Environment > Windows XP SP2 > Visual Studio SP5 > Postgresql 8.0.3 > > Any ideas?? > > ---------------------------(end of broadcast)--------------------------- > TIP 9: In versions below 8.0, the planner will ignore your desire to > choose an index scan if your joining column's datatypes do not > match >
crash in this case means I get the popup that says <progname> has encountered errors and needs to close when I click the debug button this is the call stack that shows up in the Visual Studio debugger ntdll.dll!7c918fea() ntdll.dll!7c9106eb() ntdll.dll!7c90104b() msvcrt.dll!77c3b90d() msvcrt.dll!77c420e7() libecpg.dll!6d0c7471() > ecpgtest.exe!main(int argc=1, char * * argv=0x003c0d10) Line 5 + 0xc C ecpgtest.exe!mainCRTStartup() Line 206 + 0x19 C kernel32.dll!7c816d4f() kernel32.dll!7c8399f3() The offending line in ecpgtest.pgc is ECPGdebug(1,stderr); I get the same result even if I use a file handle obtained by using fopen --- William ZHANG <uniware@zedware.org> wrote: > > "Bruce Momjian" <pgman@candle.pha.pa.us> > wrote:200508130244.j7D2iJE03191@candle.pha.pa.us... > > William ZHANG wrote: > > > Make sure the lib directory is in the PATH. > > > I tested it in MinGW. > > > > > > $ ecpg main.pgc > > > $ gcc main.c -I../include -L../lib -lecpg > > > $ export PATH=$PATH:"/c/Program > Files/PostgreSQL/8.0/lib" > > > $ ./a.exe > > > [1772]: ECPGdebug: set to 1 > > > > > > Ah, interesting. Why would it crash if the lib > directory is not in the > > path? Because it can't load the library? > > Maybe I misunderstood the word 'crash'. If I forgot > to put the lib > directory, > it will make Windows popup a GUI warning window. > > joshua masiko: Can you give more information? > > > > __________________________________ Yahoo! Mail Stay connected, organized, and protected. Take the tour: http://tour.mail.yahoo.com/mailtour.html
Yes. It is reproducible. But it works well in MinGW. Is there sth. wrong with the import library lib\ms\libecpg.lib or lib\libecpg.dll? "Joshua Masiko" <joshua_masiko@yahoo.com> wrote:20050813145453.48119.qmail@web33903.mail.mud.yahoo.com... > > ntdll.dll!7c918fea() > ntdll.dll!7c9106eb() > ntdll.dll!7c90104b() > msvcrt.dll!77c3b90d() > msvcrt.dll!77c420e7() > libecpg.dll!6d0c7471() >> ecpgtest.exe!main(int argc=1, char * * > argv=0x003c0d10) Line 5 + 0xc C > ecpgtest.exe!mainCRTStartup() Line 206 + 0x19 C > kernel32.dll!7c816d4f() > kernel32.dll!7c8399f3() > > > The offending line in ecpgtest.pgc is > > ECPGdebug(1,stderr); > > I get the same result even if I use a file handle > obtained by using fopen
On Mon, Aug 15, 2005 at 07:39:42PM +0800, William ZHANG wrote: > Yes. It is reproducible. But it works well in MinGW. > Is there sth. wrong with the import library lib\ms\libecpg.lib or > lib\libecpg.dll? > > "Joshua Masiko" <joshua_masiko@yahoo.com> > wrote:20050813145453.48119.qmail@web33903.mail.mud.yahoo.com... > > > > ntdll.dll!7c918fea() > > ntdll.dll!7c9106eb() > > ntdll.dll!7c90104b() > > msvcrt.dll!77c3b90d() > > msvcrt.dll!77c420e7() > > libecpg.dll!6d0c7471() > >> ecpgtest.exe!main(int argc=1, char * * > > argv=0x003c0d10) Line 5 + 0xc C > > ecpgtest.exe!mainCRTStartup() Line 206 + 0x19 C > > kernel32.dll!7c816d4f() > > kernel32.dll!7c8399f3() > > > > > > The offending line in ecpgtest.pgc is > > > > ECPGdebug(1,stderr); > > > > I get the same result even if I use a file handle > > obtained by using fopen Could someone with access to a Windows system have a look at this? I do not have one atm. In particular I'd like to know whether it makes a difference if your compiled ecpg with threading enabled or not. After all without threading the function called does not much, just changing two variables and logging the change. Michael -- Michael Meskes Email: Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org) ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
Ah, I have found the cause of the crash, and added documentation about the cause: On Win32, if the <application>ecpg</> libraries and application are compiled with different flags, this function call will crash the application because the internal representation of the <literal>FILE</> pointers differ. While such a mismatch is a problem on all platforms, it is more common on Win32 where the FILE structure changes for debug, for example. --------------------------------------------------------------------------- Michael Meskes wrote: > On Mon, Aug 15, 2005 at 07:39:42PM +0800, William ZHANG wrote: > > Yes. It is reproducible. But it works well in MinGW. > > Is there sth. wrong with the import library lib\ms\libecpg.lib or > > lib\libecpg.dll? > > > > "Joshua Masiko" <joshua_masiko@yahoo.com> > > wrote:20050813145453.48119.qmail@web33903.mail.mud.yahoo.com... > > > > > > ntdll.dll!7c918fea() > > > ntdll.dll!7c9106eb() > > > ntdll.dll!7c90104b() > > > msvcrt.dll!77c3b90d() > > > msvcrt.dll!77c420e7() > > > libecpg.dll!6d0c7471() > > >> ecpgtest.exe!main(int argc=1, char * * > > > argv=0x003c0d10) Line 5 + 0xc C > > > ecpgtest.exe!mainCRTStartup() Line 206 + 0x19 C > > > kernel32.dll!7c816d4f() > > > kernel32.dll!7c8399f3() > > > > > > > > > The offending line in ecpgtest.pgc is > > > > > > ECPGdebug(1,stderr); > > > > > > I get the same result even if I use a file handle > > > obtained by using fopen > > Could someone with access to a Windows system have a look at this? I do > not have one atm. In particular I'd like to know whether it makes a > difference if your compiled ecpg with threading enabled or not. After > all without threading the function called does not much, just changing > two variables and logging the change. > > Michael > -- > Michael Meskes > Email: Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org) > ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org > Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL! > > ---------------------------(end of broadcast)--------------------------- > TIP 2: Don't 'kill -9' the postmaster > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
I remember that I have posted the answer to pgsql.bugs, but now it can only be found here: http://www.talkaboutdatabases.com/group/pgsql.bugs/messages/2346.html Do not know what's wrong with the mail list or my mails. "Bruce Momjian" <pgman@candle.pha.pa.us> wrote > > Ah, I have found the cause of the crash, and added documentation about > the cause: > > On Win32, if the <application>ecpg</> libraries and application are > compiled with different flags, this function call will crash the > application because the internal representation of the <literal>FILE</> > pointers differ. > > While such a mismatch is a problem on all platforms, it is more common > on Win32 where the FILE structure changes for debug, for example. > > -------------------------------------------------------------------------- - > > Michael Meskes wrote: > > On Mon, Aug 15, 2005 at 07:39:42PM +0800, William ZHANG wrote: > > > Yes. It is reproducible. But it works well in MinGW. > > > Is there sth. wrong with the import library lib\ms\libecpg.lib or > > > lib\libecpg.dll? > > > > > > "Joshua Masiko" <joshua_masiko@yahoo.com> > > > wrote:20050813145453.48119.qmail@web33903.mail.mud.yahoo.com... > > > > > > > > ntdll.dll!7c918fea() > > > > ntdll.dll!7c9106eb() > > > > ntdll.dll!7c90104b() > > > > msvcrt.dll!77c3b90d() > > > > msvcrt.dll!77c420e7() > > > > libecpg.dll!6d0c7471() > > > >> ecpgtest.exe!main(int argc=1, char * * > > > > argv=0x003c0d10) Line 5 + 0xc C > > > > ecpgtest.exe!mainCRTStartup() Line 206 + 0x19 C > > > > kernel32.dll!7c816d4f() > > > > kernel32.dll!7c8399f3() > > > > > > > > > > > > The offending line in ecpgtest.pgc is > > > > > > > > ECPGdebug(1,stderr); > > > > > > > > I get the same result even if I use a file handle > > > > obtained by using fopen > > > > Could someone with access to a Windows system have a look at this? I do > > not have one atm. In particular I'd like to know whether it makes a > > difference if your compiled ecpg with threading enabled or not. After > > all without threading the function called does not much, just changing > > two variables and logging the change. > > > > Michael > > -- > > Michael Meskes > > Email: Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org) > > ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org > > Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL! > > > > ---------------------------(end of broadcast)--------------------------- > > TIP 2: Don't 'kill -9' the postmaster > > > > -- > Bruce Momjian | http://candle.pha.pa.us > pgman@candle.pha.pa.us | (610) 359-1001 > + If your life is a hard drive, | 13 Roberts Road > + Christ can be your backup. | Newtown Square, Pennsylvania 19073 > > ---------------------------(end of broadcast)--------------------------- > TIP 6: explain analyze is your friend >
Thanks, I have added an additional sentence to that section outlining the specific items that should match --- patch attached. --------------------------------------------------------------------------- William ZHANG wrote: > I remember that I have posted the answer to pgsql.bugs, > but now it can only be found here: > > http://www.talkaboutdatabases.com/group/pgsql.bugs/messages/2346.html > > Do not know what's wrong with the mail list or my mails. > > "Bruce Momjian" <pgman@candle.pha.pa.us> wrote > > > > Ah, I have found the cause of the crash, and added documentation about > > the cause: > > > > On Win32, if the <application>ecpg</> libraries and application are > > compiled with different flags, this function call will crash the > > application because the internal representation of the <literal>FILE</> > > pointers differ. > > > > While such a mismatch is a problem on all platforms, it is more common > > on Win32 where the FILE structure changes for debug, for example. > > > > -------------------------------------------------------------------------- > - > > > > Michael Meskes wrote: > > > On Mon, Aug 15, 2005 at 07:39:42PM +0800, William ZHANG wrote: > > > > Yes. It is reproducible. But it works well in MinGW. > > > > Is there sth. wrong with the import library lib\ms\libecpg.lib or > > > > lib\libecpg.dll? > > > > > > > > "Joshua Masiko" <joshua_masiko@yahoo.com> > > > > wrote:20050813145453.48119.qmail@web33903.mail.mud.yahoo.com... > > > > > > > > > > ntdll.dll!7c918fea() > > > > > ntdll.dll!7c9106eb() > > > > > ntdll.dll!7c90104b() > > > > > msvcrt.dll!77c3b90d() > > > > > msvcrt.dll!77c420e7() > > > > > libecpg.dll!6d0c7471() > > > > >> ecpgtest.exe!main(int argc=1, char * * > > > > > argv=0x003c0d10) Line 5 + 0xc C > > > > > ecpgtest.exe!mainCRTStartup() Line 206 + 0x19 C > > > > > kernel32.dll!7c816d4f() > > > > > kernel32.dll!7c8399f3() > > > > > > > > > > > > > > > The offending line in ecpgtest.pgc is > > > > > > > > > > ECPGdebug(1,stderr); > > > > > > > > > > I get the same result even if I use a file handle > > > > > obtained by using fopen > > > > > > Could someone with access to a Windows system have a look at this? I do > > > not have one atm. In particular I'd like to know whether it makes a > > > difference if your compiled ecpg with threading enabled or not. After > > > all without threading the function called does not much, just changing > > > two variables and logging the change. > > > > > > Michael > > > -- > > > Michael Meskes > > > Email: Michael at Fam-Meskes dot De, Michael at Meskes dot > (De|Com|Net|Org) > > > ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org > > > Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL! > > > > > > ---------------------------(end of broadcast)--------------------------- > > > TIP 2: Don't 'kill -9' the postmaster > > > > > > > -- > > Bruce Momjian | http://candle.pha.pa.us > > pgman@candle.pha.pa.us | (610) 359-1001 > > + If your life is a hard drive, | 13 Roberts Road > > + Christ can be your backup. | Newtown Square, Pennsylvania > 19073 > > > > ---------------------------(end of broadcast)--------------------------- > > TIP 6: explain analyze is your friend > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faq > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 Index: doc/src/sgml/ecpg.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v retrieving revision 1.67 diff -c -c -r1.67 ecpg.sgml *** doc/src/sgml/ecpg.sgml 25 Sep 2005 03:12:13 -0000 1.67 --- doc/src/sgml/ecpg.sgml 13 Oct 2005 17:45:12 -0000 *************** *** 1612,1618 **** On Win32, if the <application>ecpg</> libraries and an application are compiled with different flags, this function call will crash the application because the internal representation of the ! <literal>FILE</> pointers differ. </para> </note> </listitem> --- 1612,1620 ---- On Win32, if the <application>ecpg</> libraries and an application are compiled with different flags, this function call will crash the application because the internal representation of the ! <literal>FILE</> pointers differ. Specifically, ! threading/non-threading, release/debug, and static/dynamic flags should ! be the same for the library and all applications using that library. </para> </note> </listitem> Index: doc/src/sgml/libpq.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v retrieving revision 1.191 diff -c -c -r1.191 libpq.sgml *** doc/src/sgml/libpq.sgml 25 Sep 2005 03:12:13 -0000 1.191 --- doc/src/sgml/libpq.sgml 13 Oct 2005 17:45:15 -0000 *************** *** 3520,3526 **** On Win32, if the <application>libpq</> library and an application are compiled with different flags, this function call will crash the application because the internal representation of the <literal>FILE</> ! pointers differ. </para> </note> </listitem> --- 3520,3528 ---- On Win32, if the <application>libpq</> library and an application are compiled with different flags, this function call will crash the application because the internal representation of the <literal>FILE</> ! pointers differ. Specifically, threading/non-threading, release/debug, and ! static/dynamic flags should be the same for the library and all applications ! using that library. </para> </note> </listitem>