ID: 7246 User Update by: [EMAIL PROTECTED] Status: Open Bug Type: Sybase-ct (ctlib) related Operating system: Win32 PHP Version: 4.0.3pl1-4.0.5 Description: Using Sybase function(s) makes php to crash It seems like the declaration of the "_client_message_handler" (line 201) and the "_server_message_handler" (line 227) in "ext/sybase_ct/sybase_ct.c" are wrong. According to the sybase sample code, found in "/sybase..../sample/exutils.h" they are supposed to be declared not only as CS_RETCOD, but also as CS_PUBLIC. This has also been mention by [EMAIL PROTECTED] in bug report http://bugs.php.net/?id=8836 Which would make the statement on line 201 look like extern CS_RETCODE CS_PUBLIC _client_message_handler(CS_CONTEXT *context, CS_CONNECTION *connection, CS_CLIENTMSG *errmsg) instead of static CS_RETCODE _client_message_handler(CS_CONTEXT *context, CS_CONNECTION *connection, CS_CLIENTMSG *errmsg) and the statement on line 227 should look like extern CS_RETCODE CS_PUBLIC _server_message_handler(CS_CONTEXT *context, CS_CONNECTION *connection, CS_SERVERMSG *srvmsg) instead of static CS_RETCODE _server_message_handler(CS_CONTEXT *context, CS_CONNECTION *connection, CS_SERVERMSG *srvmsg) I have tested this change on Windows NT/2000 and SuSE Linux without experiencing any problems. Without the change php gives a memory fault on Windows NT/2000 after sybase_(p)connect if you are using llibct.dll version 11.x.x. If you are using libct.dll version 10.04 it works ok, but this is a version sybase is about to stop supporting. TEN Previous Comments: --------------------------------------------------------------------------- [2000-10-16 11:13:09] [EMAIL PROTECTED] This script makes php crash, and it has been like this since version 4.0b4. I never tested it on version 3. <?php $db = sybase_pconnect("myserv", "myusr", "") ; sybase_select_db("mydb",$db); $result = sybase_query("SELECT col1, col2,..... FROM mytab",$db); echo "<table border=1>n"; echo "<tr><td>Code</td><td>Name</td>n"; while ($myrow = sybase_fetch_row($result)) { printf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>n", $myrow[0], $myrow[1], $myrow[2]); } sybase_close($db); ?> If you run the php.exe you will get an exeption handle in the executable when sybase returnes, and if you run it as a moudle on Apache you just get a blank page. If you set the min message level to 10 you will get the db message which says "changed db to....." before php dies. My php.ini is the standard one with the php_sybase_ct.dll enabled. --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=7246 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]