Edit report at https://bugs.php.net/bug.php?id=64913&edit=1

 ID:                 64913
 Updated by:         fel...@php.net
 Reported by:        slusarz at curecanti dot org
 Summary:            Segfault in zend_hash_find
-Status:             Open
+Status:             Feedback
 Type:               Bug
 Package:            Reproducible crash
 Operating System:   Linux
 PHP Version:        5.4.15
 Block user comment: N
 Private report:     N

 New Comment:

Please try using this snapshot:

  http://snaps.php.net/php-trunk-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/




Previous Comments:
------------------------------------------------------------------------
[2013-05-24 06:21:58] slusarz at curecanti dot org

Description:
------------
(Mostly) reproducible segfault:

[353713.319612] php-fpm[24273]: segfault at 30 ip 0000000000742b28 sp 
00007fff3f5f3950 error 4 in php-fpm[400000+970000]

Verified occuring if either APC, ZendOPcache, or neither is active.

Appears to be happening in shutdown code.  Main actions in code is successful, 
but valid response is never sent back to browser.

Test script:
---------------
Script causing segfault is Spam message reporting in IMP 
(http://www.horde.org/imp/).  90% of time script crashes, although spam 
reporting is successful.  However, 10% of time script is successful with no 
segfault.  Additionally, saw this for months, upgraded OS (using Arch Linux) - 
had no issues for a month.  Recently rebooted (after several further upgrades) 
and am seeing again.

Actual result:
--------------
Core was generated by `php-fpm: pool www          '.
Program terminated with signal 11, Segmentation fault.
#0  0x0000000000742b28 in zend_hash_find (ht=0x2ef2358,
    arKey=arKey@entry=0xc13e40 "stream", nKeyLength=nKeyLength@entry=7,
    pData=pData@entry=0x7fff3f5f39e8)
    at /disk2/src/php-5.4.15/Zend/zend_hash.c:924
924             p = ht->arBuckets[nIndex];
(gdb) bt full
#0  0x0000000000742b28 in zend_hash_find (ht=0x2ef2358,
    arKey=arKey@entry=0xc13e40 "stream", nKeyLength=nKeyLength@entry=7,
    pData=pData@entry=0x7fff3f5f39e8)
    at /disk2/src/php-5.4.15/Zend/zend_hash.c:924
        h = 229483039115121
        nIndex = 0
        p = <optimized out>
#1  0x00000000006b0b30 in userfilter_filter (stream=0x3072540,
    thisfilter=<optimized out>, buckets_in=0x7fff3f5f3aa0,
    buckets_out=0x7fff3f5f3ab0, bytes_consumed=0x7fff3f5f3a98, flags=2)
    at /disk2/src/php-5.4.15/ext/standard/user_filters.c:183
        ret = 0
        obj = 0x2ef96d0
        func_name = {value = {lval = 49225688, dval = 2.43207213336997e-316,
            str = {val = 0x2ef1fd8 "\220\376\355\002", len = 3},
            ht = 0x2ef1fd8, obj = {handle = 49225688, handlers = 0x3}},
          refcount__gc = 24, type = 0 '\000', is_ref__gc = 0 '\000'}
        retval = 0x0
        args = {0x0, 0x7f3c4d876770, 0x7f3c4d876808,
          0x75a5c4 <zend_objects_store_del_ref_by_handle_ex+564>}
        zclosing = 0x710c48 <_zend_mm_free_int+200>
        zconsumed = 0x2ef5058
        zin = 0x710c48 <_zend_mm_free_int+200>
        zout = 0x2f75eb0
        zstream = 0x710c48 <_zend_mm_free_int+200>
        zpropname = {value = {lval = 49225688, dval = 2.43207213336997e-316,
            str = {val = 0x2ef1fd8 "\220\376\355\002", len = 7408712},
            ht = 0x2ef1fd8, obj = {handle = 49225688,
              handlers = 0x710c48 <_zend_mm_free_int+200>}},
          refcount__gc = 49349512, type = 0 '\000', is_ref__gc = 0 '\000'}
        call_result = <optimized out>
#2  0x00000000006eeff4 in _php_stream_write_filtered (
    stream=stream@entry=0x3072540, buf=buf@entry=0x0, count=count@entry=0,
    flags=2) at /disk2/src/php-5.4.15/main/streams/streams.c:1177
        consumed = 0
        bucket = <optimized out>
        brig_in = {head = 0x0, tail = 0x0}
        brig_out = {head = 0x0, tail = 0x0}
        brig_inp = 0x7fff3f5f3aa0
        brig_outp = 0x7fff3f5f3ab0
        brig_swap = <optimized out>
        status = PSFS_ERR_FATAL
        filter = 0x2efb298
#3  0x00000000006f065c in _php_stream_flush (stream=0x3072540,
    closing=<optimized out>)
    at /disk2/src/php-5.4.15/main/streams/streams.c:1226
No locals.
#4  0x00000000006f224a in _php_stream_free (stream=<optimized out>,
    close_options=11) at /disk2/src/php-5.4.15/main/streams/streams.c:461
        ret = 1
        preserve_handle = 0
        release_cast = 1
        context = 0x0
#5  0x00000000006f2521 in stream_resource_regular_dtor (rsrc=<optimized out>)
    at /disk2/src/php-5.4.15/main/streams/streams.c:1616
        stream = <optimized out>
#6  0x000000000074404e in list_entry_destructor (ptr=0x2efa320)
    at /disk2/src/php-5.4.15/Zend/zend_list.c:183
        le = 0x2efa320
        ld = 0x27aaae0
#7  0x0000000000741efe in zend_hash_del_key_or_index (
    ht=0xfa0410 <executor_globals+656>, arKey=arKey@entry=0x0,
    nKeyLength=nKeyLength@entry=0, h=h@entry=89, flag=flag@entry=1)
    at /disk2/src/php-5.4.15/Zend/zend_hash.c:531
        nIndex = <optimized out>
        p = 0x2efa360
#8  0x00000000007441f7 in _zend_list_delete (id=<optimized out>)
    at /disk2/src/php-5.4.15/Zend/zend_list.c:57
        le = 0x2efa320
#9  0x00000000007269b2 in _zval_dtor (zvalue=<optimized out>)
    at /disk2/src/php-5.4.15/Zend/zend_variables.h:35
No locals.
#10 _zval_ptr_dtor (zval_ptr=0x2ef7d80)
    at /disk2/src/php-5.4.15/Zend/zend_execute_API.c:438
        zval_ptr = 0x2ef7d80
#11 0x0000000000754917 in zend_object_std_dtor (object=0x2ef4810)
    at /disk2/src/php-5.4.15/Zend/zend_objects.c:54
        i = 2
#12 0x0000000000754949 in zend_objects_free_object_storage (object=0x2ef4810)
    at /disk2/src/php-5.4.15/Zend/zend_objects.c:137
No locals.
#13 0x000000000075a5c4 in zend_objects_store_del_ref_by_handle_ex (handle=259,
    handlers=<optimized out>)
    at /disk2/src/php-5.4.15/Zend/zend_objects_API.c:221
        __orig_bailout = 0x7fff3f5f3e20
        __bailout = {{__jmpbuf = {49237376, -7765129602178683652, 49376136,
              139896975484784, 139896975484936, 139896975484496,
              7764993663327071484, -7765135061082247940},
            __mask_was_saved = 0, __saved_mask = {__val = {7408712, 49732072,
                7408712, 49403632, 16385040, 90, 49262568, 0, 7408712,
                49348960, 49348616, 0, 7408712, 49348568, 7408712, 49349168}}}}
        obj = 0x7f3c4d89b8c0
        failure = 0
#14 0x000000000075a5e3 in zend_objects_store_del_ref (zobject=0x2ef4d80)
    at /disk2/src/php-5.4.15/Zend/zend_objects_API.c:173
        handle = <optimized out>
#15 0x00000000007269b2 in _zval_dtor (zvalue=<optimized out>)
    at /disk2/src/php-5.4.15/Zend/zend_variables.h:35
No locals.
#16 _zval_ptr_dtor (zval_ptr=0x2f13e78)
    at /disk2/src/php-5.4.15/Zend/zend_execute_API.c:438
        zval_ptr = 0x2f13e78
#17 0x0000000000742008 in zend_hash_destroy (ht=0x2f12500)
    at /disk2/src/php-5.4.15/Zend/zend_hash.c:560
        p = 0x2f16b88
        q = 0x2f13e60
#18 0x0000000000734172 in _zval_dtor_func (zvalue=0x2f10358)
    at /disk2/src/php-5.4.15/Zend/zend_variables.c:45
No locals.
#19 0x00000000007269b2 in _zval_dtor (zvalue=<optimized out>)
    at /disk2/src/php-5.4.15/Zend/zend_variables.h:35
No locals.
#20 _zval_ptr_dtor (zval_ptr=0x2f0ef58)
    at /disk2/src/php-5.4.15/Zend/zend_execute_API.c:438
        zval_ptr = 0x2f0ef58
#21 0x0000000000754917 in zend_object_std_dtor (object=0x2ef0bf8)
    at /disk2/src/php-5.4.15/Zend/zend_objects.c:54
        i = 7
#22 0x0000000000754949 in zend_objects_free_object_storage (object=0x2ef0bf8)
    at /disk2/src/php-5.4.15/Zend/zend_objects.c:137
No locals.
#23 0x000000000075a1a8 in zend_objects_store_free_object_storage (
    objects=0xfa0540 <executor_globals+960>)
    at /disk2/src/php-5.4.15/Zend/zend_objects_API.c:92
        obj = <optimized out>
        i = 255
#24 0x0000000000726e8a in shutdown_executor ()
    at /disk2/src/php-5.4.15/Zend/zend_execute_API.c:297
        __orig_bailout = 0x7fff3f5f4290
        __bailout = {{__jmpbuf = {45348848, -7765133929708458756, 1,
              139896975484784, 139896975484936, 139896975484496,
              7764993663387888892, -7765135110167925508},
            __mask_was_saved = 0, __saved_mask = {__val = {8, 0, 7408712,
                139896975728504, 7408712, 139895674765312, 50744240, 44795704,
                7408712, 49366816, 44795704, 0, 44253864, 16382864, 16382864,
                1}}}}
#25 0x0000000000735076 in zend_deactivate ()
    at /disk2/src/php-5.4.15/Zend/zend.c:938
No locals.
#26 0x00000000006d8a20 in php_request_shutdown (dummy=dummy@entry=0x0)
    at /disk2/src/php-5.4.15/main/main.c:1800
        report_memleaks = 1 '\001'
#27 0x0000000000435a51 in main (argc=<optimized out>, argv=<optimized out>)
    at /disk2/src/php-5.4.15/sapi/fpm/fpm/fpm_main.c:1952
        primary_script = <optimized out>
        __orig_bailout = 0x0
        __bailout = {{__jmpbuf = {0, -7765135777435554564, 70, 4294967295,
              4294967295, 0, 7764993662408518908, -7765135255906882308},
            __mask_was_saved = 0, __saved_mask = {__val = {
                0 <repeats 16 times>}}}}
        exit_status = 0
        c = <optimized out>
        use_extended_info = 0
        file_handle = {type = ZEND_HANDLE_MAPPED,
          filename = 0x7f3c4d877818 " \237}\002", opened_path = 0x0, handle = {
            fd = 1300922880, fp = 0x7f3c4d8a8200, stream = {
              handle = 0x7f3c4d8a8200, isatty = 0, mmap = {len = 2713,
                pos = 0, map = 0x0,
                buf = 0x7f3c4d8db000 <Address 0x7f3c4d8db000 out of bounds>,
                old_handle = 0x0, old_closer = 0x0},
              reader = 0x6efe80 <_php_stream_read>,
              fsizer = 0x6d6960 <php_zend_stream_fsizer>,
              closer = 0x6d6940 <php_zend_stream_mmap_closer>}},
          free_filename = 0 '\000'}
        orig_optind = 1
        orig_optarg = 0x0
        ini_entries_len = <optimized out>
        max_requests = 0
        requests = 200
        fcgi_fd = <optimized out>
        request = {listen_socket = 0, fd = 3, id = 1, keep = 0, closed = 0,
          in_len = 0, in_pad = 0, out_hdr = 0x7fff3f5f4460,
          out_pos = 0x7fff3f5f475e "n line 835\nPHP message: PHP Strict 
Standards:  Non-static method serendipity_plugin_api::probePlugin() should not 
be called statically in /httpd/s9y/include/plugin_api.inc.php on line 542\nPHP 
message:"...,
          out_buf = "\001\006\000\001\f\267\001\000Expires: Thu, 19 Nov 1981 
08:52:00 GMT\r\nCache-Control: no-store, no-cache, must-revalidate, 
post-check=0, pre-check=0\r\nPragma: no-cache\r\nContent-Type: 
application/json\r\nContent-Encoding: gzip\r"..., reserved = '\000' <repeats 15 
times>, env = 0x7f3c4d876040}
        fpm_config = 0x0
        fpm_prefix = 0x0
        fpm_pid = 0x0
        test_conf = 0
        force_daemon = <optimized out>
        php_information = 0
        php_allow_to_run_as_root = 0
        __func__ = "main"


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64913&edit=1

Reply via email to