On 21 Dec 2001 [EMAIL PROTECTED] wrote:

> Assigned to myself. By the I updated this bug report, I know the fix, but I forgot 
>what is was now :(
> I'll work on this after I finish things have to do....

Didn't you send me a patch for this?

Derick

>
>
> Previous Comments:
> ------------------------------------------------------------------------
>
> [2001-12-19 23:00:15] [EMAIL PROTECTED]
>
> Is this fixed?
> Anyone mind if I fix this and commit?
> --
> Yasuo Ohgaki
>
>
> ------------------------------------------------------------------------
>
> [2001-12-14 16:00:04] [EMAIL PROTECTED]
>
> I had already tried out your user handlers (as you can see from the bug report).  
>Your handlers weren't causing the crash but were helping in making the crash happen. 
>(I would guess that the initialization of the internal data structures from your 
>handlers allowed the invalid "return false;" pointer to be fubar'd in such a way to 
>cause a segfault.)
>
> Read the bug report, it's all there, including on how I was reproducing the crash.
>
> Your session handlers have a few problems when there is concurrent access for the 
>same session id.  (It *DOES* happen, especially with AvantGo clients, trust me on 
>this one)  You also do not check for expiration in your session_read.  Since garbage 
>collection doesn't happen on every single access, there's a possibility that stale 
>data would get loaded.
>
> Also, since your session handlers aren't mentioned anywhere on the PHP website under 
>the session documentation, as well as not stressing the fact that returning false 
>will cause data corruption, it still doesn't really address the issue.
>
> Personally I don't think the doing something in a script language should cause a 
>low-level crash. I believe there was another recent bug dealing with the xslt 
>extension that explained this issue well: "But PHP generating nice corefiles is not 
>ok."
>
> At most I think PHP should return an error when the data isn't what was expected, 
>not segfault, or core, or crash.
>
>
> ------------------------------------------------------------------------
>
> [2001-12-14 15:29:01] [EMAIL PROTECTED]
>
> Could you take a look at my user session handlers using PostgreSQL.
> You'll see what kind of values should be returned.
> Please report the result.
>
> http://www.zend.com/codex.php?id=456&single=1
>
> ------------------------------------------------------------------------
>
> [2001-12-14 12:57:35] [EMAIL PROTECTED]
>
> After reading other similar problems, looking at PHP/Zend source code and tracking 
>down all the different crashes, I believe I found the problem.  I went back to the 
>internal session code and for the past 2 hours or so things are working ok.  (No 
>faults)
>
> My session_read function had a "return false;" when there was no data available.  
>Obviously, the lower-level functions treat this "false" as data and try and 
>manipulate it as such.  (Perhaps even trying to unserialize it?)
>
> Regardless, switching to "return '';" eliminated the crashes for me.
>
> Whether or not this is some other bug popping up (freeing the memory for a false 
>incorrectly) or just a documentation issue I really don't know.  At the very least, 
>since many of the tutorials on user-defined session handlers have "return false;" (I 
>just checked PHPBuilder and the code there has it), if there's a way to fix it in the 
>code then great!  If not, maybe put it in a FAQ somewhere or put it up in the 
>documentation under the set_handler function.
>
> Comments?
>
>
> ------------------------------------------------------------------------
>
> [2001-12-14 10:11:51] [EMAIL PROTECTED]
>
> Another update.  If I have the following in the script:
>
> session_register("onevar");
>
> And then don't set the variable to anything, I get the crash on 
>zend_hash_get_current_key_ex
>
> If I have the following in my script:
>
> session_register("onevar");
> $_SESSION["onevar"] = "";  //Anything in the quotes.
>
> Or just:
>
> $_SESSION["onevar"] = "";
>
> I get the crash at _zend_is_inconsistent
>
>
> Next, if I have the following:
>
> session_register("onevar");
> session_unregister("onevar");
>
> I get an entirely different crash.  Here's the bt.
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x81497bc in zend_hash_del_key_or_index (ht=0x829e7e4, arKey=0x829d6a4 "onevar", 
>nKeyLength=7, h=4009320036, flag=0)
>     at zend_hash.c:484
> 484             p = ht->arBuckets[nIndex];
> (gdb) bt
> #0  0x81497bc in zend_hash_del_key_or_index (ht=0x829e7e4, arKey=0x829d6a4 "onevar", 
>nKeyLength=7, h=4009320036, flag=0)
>     at zend_hash.c:484
> #1  0x80bfb74 in zif_session_unregister (ht=1, return_value=0x82ae5a4, this_ptr=0x0, 
>return_value_used=0) at session.c:1279
> #2  0x816af2e in execute (op_array=0x82944a4) at ./zend_execute.c:1598
> #3  0x81448e9 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at 
>zend.c:810
> #4  0x808caad in php_execute_script (primary_file=0xbfbff894) at main.c:1310
> #5  0x8150426 in apache_php_module_main (r=0x8284034, display_source_mode=0) at 
>sapi_apache.c:90
> #6  0x808919e in send_php (r=0x8284034, display_source_mode=0, filename=0x8284b14 
>"/home/www/intranet/htdocs/test.php")
>     at mod_php4.c:575
> #7  0x80891f2 in send_parsed_php (r=0x8284034) at mod_php4.c:590
> #8  0x8175311 in ap_invoke_handler (r=0x8284034) at http_config.c:517
> #9  0x81899b4 in process_request_internal (r=0x8284034) at http_request.c:1307
> #10 0x8189a1e in ap_process_request (r=0x8284034) at http_request.c:1323
> #11 0x8180a1f in child_main (child_num_arg=0) at http_main.c:4209
> #12 0x8180bdd in make_child (s=0x8226034, slot=0, now=1008341402) at http_main.c:4313
> #13 0x8180d56 in startup_children (number_to_start=5) at http_main.c:4395
> #14 0x8181360 in standalone_main (argc=2, argv=0xbfbffbbc) at http_main.c:4683
> #15 0x8181b78 in main (argc=2, argv=0xbfbffbbc) at http_main.c:5010
>
> Next, if I have the following:
>
> $_SESSION["onevar"] = "Test";
> session_unset();
>
> I get the following (yet another bt):
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x81482f9 in _zend_is_inconsistent (ht=0x84003038, file=0x81e01e4 "zend_hash.c", 
>line=558) at zend_hash.c:84
> 84              if (ht->inconsistent==HT_OK) {
> (gdb) bt
> #0  0x81482f9 in _zend_is_inconsistent (ht=0x84003038, file=0x81e01e4 "zend_hash.c", 
>line=558) at zend_hash.c:84
> #1  0x8149b31 in zend_hash_clean (ht=0x84003038) at zend_hash.c:558
> #2  0x80bff90 in zif_session_unset (ht=0, return_value=0x82ae5e4, this_ptr=0x0, 
>return_value_used=0) at session.c:1384
> #3  0x816af2e in execute (op_array=0x82944a4) at ./zend_execute.c:1598
> #4  0x81448e9 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at 
>zend.c:810
> #5  0x808caad in php_execute_script (primary_file=0xbfbff894) at main.c:1310
> #6  0x8150426 in apache_php_module_main (r=0x8284034, display_source_mode=0) at 
>sapi_apache.c:90
> #7  0x808919e in send_php (r=0x8284034, display_source_mode=0, filename=0x8284b14 
>"/home/www/intranet/htdocs/test.php")
>     at mod_php4.c:575
> #8  0x80891f2 in send_parsed_php (r=0x8284034) at mod_php4.c:590
> #9  0x8175311 in ap_invoke_handler (r=0x8284034) at http_config.c:517
> #10 0x81899b4 in process_request_internal (r=0x8284034) at http_request.c:1307
> #11 0x8189a1e in ap_process_request (r=0x8284034) at http_request.c:1323
> #12 0x8180a1f in child_main (child_num_arg=0) at http_main.c:4209
> #13 0x8180bdd in make_child (s=0x8226034, slot=0, now=1008342128) at http_main.c:4313
> #14 0x8180d56 in startup_children (number_to_start=5) at http_main.c:4395
> #15 0x8181360 in standalone_main (argc=2, argv=0xbfbffbbc) at http_main.c:4683
> #16 0x8181b78 in main (argc=2, argv=0xbfbffbbc) at http_main.c:5010
>
> Finally, if I do the following:
>
> session_register("onevar");
> // No initialization on $onevar or $_SESSION["onevar"]
> session_unset();
>
> I get this:  (Last bt)
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x8149b5d in zend_hash_clean (ht=0x829e764) at zend_hash.c:565
> 565                     p = p->pListNext;
> (gdb) bt
> #0  0x8149b5d in zend_hash_clean (ht=0x829e764) at zend_hash.c:565
> #1  0x80bff90 in zif_session_unset (ht=0, return_value=0x829d564, this_ptr=0x0, 
>return_value_used=0) at session.c:1384
> #2  0x816af2e in execute (op_array=0x82944a4) at ./zend_execute.c:1598
> #3  0x81448e9 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at 
>zend.c:810
> #4  0x808caad in php_execute_script (primary_file=0xbfbff894) at main.c:1310
> #5  0x8150426 in apache_php_module_main (r=0x8284034, display_source_mode=0) at 
>sapi_apache.c:90
> #6  0x808919e in send_php (r=0x8284034, display_source_mode=0, filename=0x8284b14 
>"/home/www/intranet/htdocs/test.php")
>     at mod_php4.c:575
> #7  0x80891f2 in send_parsed_php (r=0x8284034) at mod_php4.c:590
> #8  0x8175311 in ap_invoke_handler (r=0x8284034) at http_config.c:517
> #9  0x81899b4 in process_request_internal (r=0x8284034) at http_request.c:1307
> #10 0x8189a1e in ap_process_request (r=0x8284034) at http_request.c:1323
> #11 0x8180a1f in child_main (child_num_arg=0) at http_main.c:4209
> #12 0x8180bdd in make_child (s=0x8226034, slot=0, now=1008342253) at http_main.c:4313
> #13 0x8180d56 in startup_children (number_to_start=5) at http_main.c:4395
> #14 0x8181360 in standalone_main (argc=2, argv=0xbfbffbbc) at http_main.c:4683
> #15 0x8181b78 in main (argc=2, argv=0xbfbffbbc) at http_main.c:5010
>
>
> I apologize for the large amount of bt's, but I figured they'd all be helpful with 
>tracking down the problem.
>
> (BTW, all my recent testing has been under the snap version I downloaded yesterday)
>
>
> ------------------------------------------------------------------------
>
> 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/?id=14497
>
>
> Edit this bug report at http://bugs.php.net/?id=14497&edit=1
>
>
> --
> 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]
>


-- 
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]

Reply via email to