![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
The following bug has been logged online: Bug reference: 1815 Logged by: joshua masiko Email address: joshua_masiko (AT) yahoo (DOT) 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 |
#3
| |||
| |||
|
|
ecpgtest.exe!main(int argc=1, char * * argv=0x003c0d10) Line 5 + 0xc C |
|
"Bruce Momjian" <pgman (AT) candle (DOT) pha.pa.us wrote:200508130244.j7D2iJE03191 (AT) candle (DOT) 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? |
#4
| |||
| |||
|
|
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 |
#5
| |||
| |||
|
|
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 (AT) yahoo (DOT) com wrote:20050813145453.48119.qmail (AT) web33903 (DOT) 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 |
#6
| |||
| |||
|
|
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 (AT) yahoo (DOT) com wrote:20050813145453.48119.qmail (AT) web33903 (DOT) 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 (AT) jabber (DOT) org Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL! ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster |
#7
| |||
| |||
|
|
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 (AT) yahoo (DOT) com wrote:20050813145453.48119.qmail (AT) web33903 (DOT) 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 (AT) jabber (DOT) 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 (AT) candle (DOT) 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 |
#8
| |||
| |||
|
|
I remember that I have posted the answer to pgsql.bugs, but now it can only be found here: http://www.talkaboutdatabases.com/gr...ages/2346.html Do not know what's wrong with the mail list or my mails. "Bruce Momjian" <pgman (AT) candle (DOT) 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 (AT) yahoo (DOT) com wrote:20050813145453.48119.qmail (AT) web33903 (DOT) 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 (AT) jabber (DOT) 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 (AT) candle (DOT) 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 |
![]() |
| Thread Tools | |
| Display Modes | |
| |