Thread: GSSAPI on Solaris - psql segfault
I just took a look at adding gssapi build support on solaris (solaris 10/x86_64, sun studio 10, 64bit build) which seemed easy enough by educating configure to look for -lgss but while it compiles just fine the resulting tree will not be able to complete a make check due to psql(!) segfaulting as soon as it tries to connect to the backend. the backtrace looks similiar to: program terminated by signal SEGV (no mapping at the fault address) 0x00007fffffd3d401: _memcpy+0x00e1: movq %rax,(%rdi) Current function is pqPutMsgBytes 475 memcpy(conn->outBuffer + conn->outMsgEnd, buf, len); (dbx) where [1] _memcpy(0x4, 0x4709a0, 0x67, 0x2, 0x646c697562677000, 0x7361626174616400), at 0x7fffffd3d401 =>[2] pqPutMsgBytes(buf = 0x4709a0, len = 103U, conn = 0x4682f0), line 475 in "fe-misc.c" [3] pqPutnchar(s = 0x4709a0 "", len = 103U, conn = 0x4682f0), line 189 in "fe-misc.c" [4] pqPacketSend(conn = 0x4682f0, pack_type = '\0', buf = 0x4709a0, buf_len = 103U), line 2439 in "fe-connect.c" [5] PQconnectPoll(conn = 0x4682f0), line 1299 in "fe-connect.c" [6] connectDBComplete(conn= 0x4682f0), line 936 in "fe-connect.c" [7] PQsetdbLogin(pghost = (nil), pgport = (nil), pgoptions= (nil), pgtty = (nil), dbName = 0xfffffd7fffdffbeb "postgres", login = (nil), pwd = (nil)), line 660 in "fe-connect.c" [8] main(argc = 3, argv = 0xfffffd7fffdff9b8), line 211 in "startup.c" ideas ? Stefan
Stefan Kaltenbrunner wrote: > I just took a look at adding gssapi build support on solaris (solaris > 10/x86_64, sun studio 10, 64bit build) which seemed easy enough by > educating configure to look for -lgss but while it compiles just fine > the resulting tree will not be able to complete a make check due to > psql(!) segfaulting as soon as it tries to connect to the backend. Can we add the segfault to the Solaris expected regression results? ;-) --------------------------------------------------------------------------- > > the backtrace looks similiar to: > > > program terminated by signal SEGV (no mapping at the fault address) > 0x00007fffffd3d401: _memcpy+0x00e1: movq %rax,(%rdi) > Current function is pqPutMsgBytes > 475 memcpy(conn->outBuffer + conn->outMsgEnd, buf, len); > (dbx) where > [1] _memcpy(0x4, 0x4709a0, 0x67, 0x2, 0x646c697562677000, > 0x7361626174616400), at 0x7fffffd3d401 > =>[2] pqPutMsgBytes(buf = 0x4709a0, len = 103U, conn = 0x4682f0), line > 475 in "fe-misc.c" > [3] pqPutnchar(s = 0x4709a0 "", len = 103U, conn = 0x4682f0), line 189 > in "fe-misc.c" > [4] pqPacketSend(conn = 0x4682f0, pack_type = '\0', buf = 0x4709a0, > buf_len = 103U), line 2439 in "fe-connect.c" > [5] PQconnectPoll(conn = 0x4682f0), line 1299 in "fe-connect.c" > [6] connectDBComplete(conn = 0x4682f0), line 936 in "fe-connect.c" > [7] PQsetdbLogin(pghost = (nil), pgport = (nil), pgoptions = (nil), > pgtty = (nil), dbName = 0xfffffd7fffdffbeb "postgres", login = (nil), > pwd = (nil)), line 660 in "fe-connect.c" > [8] main(argc = 3, argv = 0xfffffd7fffdff9b8), line 211 in "startup.c" > > > ideas ? > > > Stefan > > ---------------------------(end of broadcast)--------------------------- > TIP 7: You can help support the PostgreSQL project by donating at > > http://www.postgresql.org/about/donate -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
Stefan Kaltenbrunner wrote: > I just took a look at adding gssapi build support on solaris (solaris > 10/x86_64, sun studio 10, 64bit build) which seemed easy enough by > educating configure to look for -lgss but while it compiles just fine > the resulting tree will not be able to complete a make check due to > psql(!) segfaulting as soon as it tries to connect to the backend. > the backtrace looks similiar to: > > > program terminated by signal SEGV (no mapping at the fault address) > 0x00007fffffd3d401: _memcpy+0x00e1: movq %rax,(%rdi) > Current function is pqPutMsgBytes > 475 memcpy(conn->outBuffer + conn->outMsgEnd, buf, len); > (dbx) where > [1] _memcpy(0x4, 0x4709a0, 0x67, 0x2, 0x646c697562677000, > 0x7361626174616400), at 0x7fffffd3d401 > =>[2] pqPutMsgBytes(buf = 0x4709a0, len = 103U, conn = 0x4682f0), line > 475 in "fe-misc.c" > [3] pqPutnchar(s = 0x4709a0 "", len = 103U, conn = 0x4682f0), line 189 > in "fe-misc.c" > [4] pqPacketSend(conn = 0x4682f0, pack_type = '\0', buf = 0x4709a0, > buf_len = 103U), line 2439 in "fe-connect.c" > [5] PQconnectPoll(conn = 0x4682f0), line 1299 in "fe-connect.c" > [6] connectDBComplete(conn = 0x4682f0), line 936 in "fe-connect.c" > [7] PQsetdbLogin(pghost = (nil), pgport = (nil), pgoptions = (nil), > pgtty = (nil), dbName = 0xfffffd7fffdffbeb "postgres", login = (nil), > pwd = (nil)), line 660 in "fe-connect.c" > [8] main(argc = 3, argv = 0xfffffd7fffdff9b8), line 211 in "startup.c" > > > ideas ? Do you use also 64bit psql? Can you send me your ./configure setup? However, I see there potential integer overflow, because len is size_t and conn->outMsgEnd is defined as int. Zdenek
Zdenek Kotala wrote: > Stefan Kaltenbrunner wrote: >> I just took a look at adding gssapi build support on solaris (solaris >> 10/x86_64, sun studio 10, 64bit build) which seemed easy enough by >> educating configure to look for -lgss but while it compiles just fine >> the resulting tree will not be able to complete a make check due to >> psql(!) segfaulting as soon as it tries to connect to the backend. >> the backtrace looks similiar to: >> >> >> program terminated by signal SEGV (no mapping at the fault address) >> 0x00007fffffd3d401: _memcpy+0x00e1: movq %rax,(%rdi) >> Current function is pqPutMsgBytes >> 475 memcpy(conn->outBuffer + conn->outMsgEnd, buf, len); >> (dbx) where >> [1] _memcpy(0x4, 0x4709a0, 0x67, 0x2, 0x646c697562677000, >> 0x7361626174616400), at 0x7fffffd3d401 >> =>[2] pqPutMsgBytes(buf = 0x4709a0, len = 103U, conn = 0x4682f0), line >> 475 in "fe-misc.c" >> [3] pqPutnchar(s = 0x4709a0 "", len = 103U, conn = 0x4682f0), line 189 >> in "fe-misc.c" >> [4] pqPacketSend(conn = 0x4682f0, pack_type = '\0', buf = 0x4709a0, >> buf_len = 103U), line 2439 in "fe-connect.c" >> [5] PQconnectPoll(conn = 0x4682f0), line 1299 in "fe-connect.c" >> [6] connectDBComplete(conn = 0x4682f0), line 936 in "fe-connect.c" >> [7] PQsetdbLogin(pghost = (nil), pgport = (nil), pgoptions = (nil), >> pgtty = (nil), dbName = 0xfffffd7fffdffbeb "postgres", login = (nil), >> pwd = (nil)), line 660 in "fe-connect.c" >> [8] main(argc = 3, argv = 0xfffffd7fffdff9b8), line 211 in "startup.c" >> >> >> ideas ? > > Do you use also 64bit psql? Can you send me your ./configure setup? > However, I see there potential integer overflow, because len is size_t > and conn->outMsgEnd is defined as int. yeah this is a full 64bit build - but I just did several fresh buildfarm cycles and I'm unable to reproduce the issue again ... Stefan