Skip to main content

PHP weird Seg-faults on mysqli_stmt_bind_result


When migrating a PHP script from PHP 5.2 to PHP 5.3, I've stumbled to the following problem: The general purpose of the script is data mining. I have a procedure inside that adds data to the MySQL server. Since it is really repetitive, I've rewritten it (a while ago) to use MySQLi, in particular prepared statements, since there are a total of 3 possible queries to perform. Anyway, now, on the PHP 5.3 server, the script is crashing on the following line:




mysqli_stmt_bind_result($prepCheck, $id1);



Where $prepCheck is created with $prepCheck = mysqli_prepare($con, $checkQuery) or die("Error"); . The query runs fine on the MySQL server ($checkQuery, that is) and the PHP code was working, too, on the previous server.



Running the script with strace didn't reveal anything, since the last thing in it is the system call for echo "Execute"; , which is 29936 19:44:18 write(1, "Execute\n", 8) = 8 .



The connection object is not FALSE , and even if it was, it should fail with another error, right?



Here comes the weirdest part: This procedure does not fail when I run the script, limiting the number of pages visited and the script completes successfully. However, when I set a higher limit, it fails, always on the first call to this procedure, and precisely on this line.



If anyone has any suggestions what could be causing this, they would be deeply appreciated.



I can paste code if anyone needs to see a larger picture, but the procedure is very long and boring to death (may be that's why the script is failing :).



Here is how the script starts: error_reporting(E_ALL); ini_set('display_errors', '1'); . No error is reported besides the 'magical' Segmentation fault . I'm not using APC.



Not sure if it's relevant, but I'm using CLI to run the script, not a web-interface.



PHP version is 5.3.8, MySQL version is 5.1.56. The memory limit is set to 64MB.



EDIT: The procedure failing + some of the other code is uploaded here: http://codepad.org/KkZTxttQ . The whole file is huge and ugly, and I believe irrelevant, so I'm not posting it for now. The line that's failing is 113.


Source: Tips4allCCNA FINAL EXAM

Comments

  1. An answer to my own question, since I've solved the issue, and there are no other answers...

    Credit goes to @jap1968 for pointing to me to the function mysqli_stmt_error (which I assumed I would not need, since I have error_reporting(E_ALL)).

    The problem was that MySQL had a very weird default configuration: particularly

    connect_timeout = 10
    wait_timeout = 30


    This caused the MySQL server to close the connection after only 30 seconds (default is more than a half hour, according to MySQL website). This in turn, caused the mysqli_stmt_bind_result function to fail with a Segmentation Fault.

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex