ID: 47712 Comment by: kak dot serpom dot po dot yaitsam at gmail dot com Reported By: ninzya at inbox dot lv Status: Open Bug Type: Scripting Engine problem Operating System: Windows XP PHP Version: 5.3.0beta1 New Comment:
I guess the trouble is in MySQL Native Driver (mysqlnd). No? Previous Comments: ------------------------------------------------------------------------ [2009-03-21 22:45:24] ninzya at inbox dot lv Tested under PHP 5.2.9-1, the problem does not exist with that version of PHP. ------------------------------------------------------------------------ [2009-03-20 12:34:59] ninzya at inbox dot lv And here is the screenshot of the output of MySql query browser after executing SQL query i mentioned above: http://www.stepanov.lv/pub/mysql.jpg ------------------------------------------------------------------------ [2009-03-20 12:28:51] ninzya at inbox dot lv I got a little bit closer to the problem. Here's what happens. See this script: // load page $sql ='SELECT id, ' .implode( ', ', $properties) .' FROM ' .TAB_PREF .'pages WHERE node_id =' .$Db->escape( $nodeId, 'UINT').' AND alt_name =' .$Db->escape( $pageAlt, 'STRING') .' LIMIT 0, 1;'; if(( $row =$Db->queryFirst( $sql)) ===null) throw new Exception( 'NOT_FOUND'); if( $row['id'] ===null) {// THIS IS WHERE YOU SHOULD LOOK AT trigger_error( 'Got NULL!', E_USER_WARNING); trigger_error( 'SQL: ' .$sql, E_USER_WARNING); ob_start(); var_dump( $row); trigger_error( ob_get_clean(), E_USER_WARNING); die(); } As you can see, i am testing if $row['id'] is null (this is unexpected situation when this field becomes null, it's an auto column and at this step i expect successfully fetched row), and if it is NULL, then i wish to see the debug info for the contents of $row and overall "what's going on". Now here is the error log when this unexpected situation is being RANDOMLY triggered during stress test: [20-Mar-2009 14:20:37] PHP Warning: Got NULL! in D:\...\pages.php on line 93 [20-Mar-2009 14:20:37] PHP Warning: SQL: SELECT id, `title`, `keywords`, `descr`, `template_id` FROM pages WHERE node_id =11 AND alt_name ='welcome' LIMIT 0, 1; in D:\...\pages.php on line 94 [20-Mar-2009 14:20:37] PHP Warning: array(5) { ["id"]=> string(6) "SHARED" ["title"]=> string(12) "My test page" ["keywords"]=> string(6) "asdasd" ["descr"]=> string(6) "asdasd" ["template_id"]=> string(4) "8567" } in D:\...\pages.php on line 97 I don't know how to explain this. I guess this is mysqlnd failing this bad. ------------------------------------------------------------------------ [2009-03-20 12:12:15] ninzya at inbox dot lv Every mentioned error/warning occurs randomly. It is not possible to trigger these warnings (especially first) during each request, something related to memory fails i think, or stack is being corrupted or something. I was investigating this problem for past day and i found this. Take a look at the following script: <?php function throw_exc() { throw new Exception('TEST_EXCEPTION'); } class Test { public function __construct() { echo 'Constr' ."\n"; } public function __destruct() { echo 'Destr' ."\n"; } } try { $T =new Test( throw_exc()); } catch( Exception $e) { echo 'Exception: ' .$e->getMessage(); } ?> Execution of this script produces: Destr Exception: TEST_EXCEPTION Where it should produce only this part: Exception: TEST_EXCEPTION As you can see, destructor is being called, where it shouldn't be. I will make a temporary work around for this situation and investigate further, because i guess this is not the problem that has caused first warning/error message i mentioned above. ------------------------------------------------------------------------ [2009-03-19 00:30:38] scott...@php.net Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. We need an actual reproduce script we can use, I took your small script and ran it under 5.3.0 without issue. I'm guessing our errors probably all stem from the same issue, if step 1 or 3 happen then 2 and 4 would be expected due to a lack of database connection. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/47712 -- Edit this bug report at http://bugs.php.net/?id=47712&edit=1