ID: 19456 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Feedback +Status: Open Bug Type: ODBC related Operating System: Redhat Linux PHP Version: 4.2.3 New Comment:
This morning I built PHP without using shared modules and it works. I've noticed this with other modules, too: sometimes if I just link them statically, they work fine, but if I share them, they don't work. I was able to generate an ODBC trace (really a CLI trace, to be pedantic) for a non-working CGI version of 4.2.1: [ Process: 21425, Thread: 1024 ] [ Date & Time: 09-18-2002 10:26:51.748775 ] [ Product: QDB2/LINUX 7.1.0.40 ] [ Level Identifier: 03010105 ] [ CLI Driver Version: 07.02.0000 ] [ Informational Tokens: "DB2 v7.1.0.40","s010415","U475381" ] [0000021425 0000001024] [1032323211.748941 - 09-18-2002 10:26:51.748941] SQLAllocEnv( phEnv=&08200acc ) [0000021425 0000001024] [1032323211.749050 - 09-18-2002 10:26:51.749050] ---> Time elapsed - 0 seconds [0000021425 0000001024] [1032323211.749343 - 09-18-2002 10:26:51.749343] SQLAllocEnv( phEnv=0:1 ) [0000021425 0000001024] [1032323211.749419 - 09-18-2002 10:26:51.749419] <--- SQL_SUCCESS Time elapsed - +4.780000E-004 seconds [0000021425 0000001024] [1032323211.749508 - 09-18-2002 10:26:51.749508] SQLAllocConnect( hEnv=0:1, phDbc=&08200ad0 ) [0000021425 0000001024] [1032323211.749602 - 09-18-2002 10:26:51.749602] ---> Time elapsed - +8.900000E-005 seconds [0000021425 0000001024] [1032323211.749798 - 09-18-2002 10:26:51.749798] SQLAllocConnect( phDbc=0:1 ) [0000021425 0000001024] [1032323211.749889 - 09-18-2002 10:26:51.749889] <--- SQL_SUCCESS Time elapsed - +3.810000E-004 seconds [0000021425 0000001024] [1032323211.749973 - 09-18-2002 10:26:51.749973] SQLConnect( hDbc=0:1, szDSN="****", cbDSN=-3, szUID="****", cbUID=-3, szAuthStr="****", cbAuthStr=-3 ) [0000021425 0000001024] [1032323211.750215 - 09-18-2002 10:26:51.750215] ---> Time elapsed - +8.400000E-005 seconds sqlccsend( ulBytes - 1622 ) sqlccsend( Handle - 1085627784 ) sqlccsend( ) - rc - 0, time elapsed - +1.550000E-004 sqlccrecv( ) sqlccrecv( ulBytes - 1262 ) - rc - 0, time elapsed - +4.329000E-003 sqlccsend( ulBytes - 611 ) sqlccsend( Handle - 1085627784 ) sqlccsend( ) - rc - 0, time elapsed - +7.000000E-005 sqlccrecv( ) sqlccrecv( ulBytes - 237 ) - rc - 0, time elapsed - +1.099620E-001 [0000021425 0000001024] [1032323211.868023 - 09-18-2002 10:26:51.868023] ( DBMS NAME="DB2/SUN", Version="07.02.0000", Fixpack="0x23010105" ) [0000021425 0000001024] [1032323211.868184 - 09-18-2002 10:26:51.868184] [0000021425 0000001024] [1032323211.868226 - 09-18-2002 10:26:51.868226] ( Application Codepage=819, Database Codepage=1252, Char Send/Recv Codepage=819, Graphic Send/Recv Codepage=819, iGraphic Codepage=819 ) [0000021425 0000001024] [1032323211.868395 - 09-18-2002 10:26:51.868395] [0000021425 0000001024] [1032323211.868475 - 09-18-2002 10:26:51.868475] SQLConnect( ) [0000021425 0000001024] [1032323211.868520 - 09-18-2002 10:26:51.868520] <--- SQL_SUCCESS Time elapsed - +1.185470E-001 seconds [0000021425 0000001024] [1032323211.868576 - 09-18-2002 10:26:51.868576] ( DSN=""****"" ) [0000021425 0000001024] [1032323211.868644 - 09-18-2002 10:26:51.868644] [0000021425 0000001024] [1032323211.868685 - 09-18-2002 10:26:51.868685] ( UID=""****"" ) [0000021425 0000001024] [1032323211.868753 - 09-18-2002 10:26:51.868753] [0000021425 0000001024] [1032323211.868794 - 09-18-2002 10:26:51.868794] ( PWD="****" ) [0000021425 0000001024] [1032323211.868861 - 09-18-2002 10:26:51.868861] [0000021425 0000001024] [1032323211.869275 - 09-18-2002 10:26:51.869275] SQLDisconnect( hDbc=0:1 ) [0000021425 0000001024] [1032323211.869378 - 09-18-2002 10:26:51.869378] ---> Time elapsed - +7.550000E-004 seconds sqlccsend( ulBytes - 72 ) sqlccsend( Handle - 1085627784 ) sqlccsend( ) - rc - 0, time elapsed - +8.800000E-005 sqlccrecv( ) sqlccrecv( ulBytes - 27 ) - rc - 0, time elapsed - +5.390000E-003 [0000021425 0000001024] [1032323211.875169 - 09-18-2002 10:26:51.875169] SQLDisconnect( ) [0000021425 0000001024] [1032323211.875226 - 09-18-2002 10:26:51.875226] <--- SQL_SUCCESS Time elapsed - +5.951000E-003 seconds [0000021425 0000001024] [1032323211.875325 - 09-18-2002 10:26:51.875325] SQLFreeConnect( hDbc=0:1 ) [0000021425 0000001024] [1032323211.875394 - 09-18-2002 10:26:51.875394] ---> Time elapsed - +9.900000E-005 seconds [0000021425 0000001024] [1032323211.875498 - 09-18-2002 10:26:51.875498] SQLFreeConnect( ) [0000021425 0000001024] [1032323211.875578 - 09-18-2002 10:26:51.875578] <--- SQL_SUCCESS Time elapsed - +2.530000E-004 seconds [0000021425 0000001024] [1032323211.875650 - 09-18-2002 10:26:51.875650] SQLFreeEnv( hEnv=0:1 ) [0000021425 0000001024] [1032323211.875716 - 09-18-2002 10:26:51.875716] ---> Time elapsed - +7.200000E-005 seconds [0000021425 0000001024] [1032323211.875886 - 09-18-2002 10:26:51.875886] SQLFreeEnv( ) [0000021425 0000001024] [1032323211.875932 - 09-18-2002 10:26:51.875932] <--- SQL_SUCCESS Time elapsed - +2.820000E-004 seconds Previous Comments: ------------------------------------------------------------------------ [2002-09-17 17:29:01] [EMAIL PROTECTED] While I understand that the connect happens just fine, I'm wondering if some resources are not being cleaned up. Since this is happening only for you with the ODBC compiled, I have no real way to tell until I see the SQL Log :) I was hoping there was more to the backtrace that you didn't post :( That seems rather unusable to me. ------------------------------------------------------------------------ [2002-09-17 15:30:27] [EMAIL PROTECTED] Please note that I *did* submit the backtrace. It's very short (only two lines), presumably because the segfault occurs as the program is exiting. I'll try to get an ODBC trace, but again, note that the problem does NOT occur during the connect, but only as the program exits. ------------------------------------------------------------------------ [2002-09-17 15:13:01] [EMAIL PROTECTED] 1) Turn on your SQL Logging feature (it will require editing your odbc.ini). Add the results of said CONNECT logging to the bug report if you can. 2) Please post a backtrace of the segfault, it will help. Honest. :) Also moving this over to ODBC ------------------------------------------------------------------------ [2002-09-17 13:26:42] [EMAIL PROTECTED] I just recompiled PHP 4.0.6 with all the same options and ODBC works there. So this seems to be unique to 4.2.x. I noticed that I had an old version of apxs is /usr/sbin/apxs (which shouldn't have mattered since I designated the correct apxs in my configure script). Unfortunately, after changing that I still get the same problem. So that's not it. ------------------------------------------------------------------------ [2002-09-17 12:37:40] [EMAIL PROTECTED] I've been running PHP 4.2.1 for some time on a test machine with the following configure options: './configure' \ '--with-apxs' \ '--with-ibm-db2=shared' \ '--with-ldap=shared' \ '--with-mcrypt=shared' \ '--with-mhash=shared' \ '--enable-ftp' \ '--with-config-file-path=/etc' \ '--enable-trans-sid' \ '--enable-debug' \ '--with-png-dir=/usr/local' \ '--with-jpeg-dir=/usr/local' \ '--with-zlib=/usr/local' \ '--with-gd=/usr/local' \ Worked fine under Apache 1.3.20. Then I started doing some upgrades, upgrading Apache to 1.3.26 and OpenSSL to 0.9.6g. At this point, PHP stopped working, generating a segfault (11) in my Apache log every time an ODBC function was called. The following script would exhibit this behavior: <?php $dbconn = odbc_connect(<dsn>,<user>,<password>); ?> I was unable to get PHP to segfault with scripts that did not use ODBC functions. I then recompiled PHP as a CGI function to get a backtrace, which gives me this: #0 0x407173ac in ?? () #1 0x40117780 in __libc_start_main () from /lib/libc.so.6 I also stepped through the code while running the script given above. PHP appears to complete processing entirely, but segfaults when exiting. The exit_status variable was 0. I then stepped through the code while running a script with no odbc code: <?php print("Test!\n"); ?> This appears to complete exactly the same way the ODBC script did, with an exit_status of 0, but it does not segfault. Note that I've also upgraded to PHP 4.2.3 and I get the exact same problem. Here is a summary of my relevant versions: Linux Kernel 2.2.16 Apache 1.3.26 OpenSSL 0.9.6g mod_ssl 2.8.10-1.3.26 PHP 4.2.3 libc 2.2.3 Please let me know if I can supply any additional information. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=19456&edit=1