Bug #60990 [Com]: Segfault when trying to allocate more memory
| From: | flatline at hardwired dot hu | Date: | Tue, 07 Feb 2012 10:59:07 +0000 |
| Subject: | Bug #60990 [Com]: Segfault when trying to allocate more memory | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-167252@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=60990&edit=1
ID: 60990
Comment by: flatline at hardwired dot hu
Reported by: flatline at hardwired dot hu
Summary: Segfault when trying to allocate more memory
Status: Open
Type: Bug
Package: FPM related
Operating System: Debian Squeeze x86_64
PHP Version: 5.3.10
Block user comment: N
Private report: N
New Comment:
Full backtrace without suhosin.so:
(gdb) thread apply all bt full
Thread 1 (Thread 13418):
#0 _zval_ptr_dtor (zval_ptr=0xa1) at /usr/src/php5/source/php5-5.3.10/Zend/zend_execute_API.c:436
zv = 0x1221730
#1 0x00000000006d0a78 in zend_hash_destroy (ht=0x1bb0de0) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_hash.c:729
p = 0x1221730
#2 0x00000000006c350f in _zval_dtor_func (zvalue=0x1bb0d90) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_variables.c:46
No locals.
#3 0x00000000006b74f9 in _zval_ptr_dtor (zval_ptr=0xa1) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_variables.h:35
zv = 0x1bb0d90
#4 0x00000000006d0712 in zend_hash_apply_deleter (ht=0xe31168, p=0x115ee48) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_hash.c:814
retval = 0x10c92e0
#5 0x00000000006d0998 in zend_hash_graceful_reverse_destroy (ht=0xe31168) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_hash.c:850
p = 0x3654f0c6cb0
#6 0x00000000006b7b0e in shutdown_executor () at
/usr/src/php5/source/php5-5.3.10/Zend/zend_execute_API.c:256
__orig_bailout = <incomplete type>
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__orig_bailout = <incomplete type>
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 2924945600, 862009622, 17601248, 0, 17605824, 0},
__mask_was_saved = 0, __saved_mask = {__val = {1280986688, 869,
14946704, 0, 7227061, 0, 18392456, 0, 18305824, 0, 14946704, 0, 7227061, 0,
14946704, 0}}}}
#7 0x00000000006c4762 in zend_deactivate () at /usr/src/php5/source/php5-5.3.10/Zend/zend.c:963
__orig_bailout = 0x0
---Type <return> to continue, or q <return> to quit---
__bailout = {{__jmpbuf = {152109408, 962, 14878784, 0, 2924945600, 862009622, 17601248, 0},
__mask_was_saved = 862134464, __saved_mask = {__val = {
0 <repeats 12 times>, 17680896, 0, 0, 145}}}}
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {152109408, 962, 14878784, 0, 2924945600, 862009622, 17601248, 0},
__mask_was_saved = 862134464, __saved_mask = {__val = {
0 <repeats 12 times>, 17680896, 0, 0, 145}}}}
__orig_bailout = 0x6c46dd
__bailout = {{__jmpbuf = {152109408, 962, 14878784, 0, 2924945600, 862009622, 17601248, 0},
__mask_was_saved = 862134464, __saved_mask = {__val = {
0 <repeats 12 times>, 17680896, 0, 0, 145}}}}
__orig_bailout = 0x6c46dd
__bailout = {{__jmpbuf = {152109408, 962, 14878784, 0, 2924945600, 862009622, 17601248, 0},
__mask_was_saved = 862134464, __saved_mask = {__val = {
0 <repeats 12 times>, 17680896, 0, 0, 145}}}}
__orig_bailout = 0x10ca4c0
__bailout = {{__jmpbuf = {152109408, 962, 14878784, 0, 2924945600, 862009622, 17601248, 0},
__mask_was_saved = 862134464, __saved_mask = {__val = {
0 <repeats 12 times>, 17680896, 0, 0, 145}}}}
__orig_bailout = 0x6c46dd
__bailout = {{__jmpbuf = {152109408, 962, 14878784, 0, 2924945600, 862009622, 17601248, 0},
__mask_was_saved = 862134464, __saved_mask = {__val = {
0 <repeats 12 times>, 17680896, 0, 0, 145}}}}
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {152109408, 962, 14878784, 0, 2924945600, 862009622, 17601248, 0},
__mask_was_saved = 862134464, __saved_mask = {__val = {
0 <repeats 12 times>, 17680896, 0, 0, 145}}}}
#8 0x000000000066f3e5 in php_request_shutdown (dummy=0xa1) at
/usr/src/php5/source/php5-5.3.10/main/main.c:1664
report_memleaks = 0 '\000'
#9 0x0000000000758ca0 in main (argc=17601248, argv=0x10ca4c0) at
/usr/src/php5/source/php5-5.3.10/sapi/fpm/fpm/fpm_main.c:1886
primary_script = 0x1000000 "\203â¨ü\201>ÄG\016"
__bailout = {{__jmpbuf = {0, 0, 11849916, 0, 4122419392, 887433970, 3, 0}, __mask_was_saved
= -1285480256, __saved_mask = {__val = {0, 0, 0, 0, 0, 0,
1324713501, 869, 0, 0, 1270933192, 869, 0, 0, 1324685090, 869}}}}
exit_status = 0
c = 7091440
file_handle = {type = ZEND_HANDLE_FILENAME, filename = 0x4 <Address 0x4 out of
bounds>,
opened_path = 0x10c9718
"'\177(Å»\017D>\"/xxxxx.hu/html/kat-origi.phtml", handle = {fd = 0, fp =
0x0, stream = {handle = 0x0, isatty = 17723752, mmap = {
len = 0, pos = 20674, map = 0x0, buf = 0x3654f03c000 <Address 0x3654f03c000 out
of bounds>, old_handle = 0x3654f03c000, old_closer = 0x1107220},
reader = 0x6d9820 <zend_stream_stdio_closer>, fsizer = 0x6d9e60
<zend_stream_stdio_reader>, closer = 0x6d98e0 <zend_stream_stdio_fsizer>}},
free_filename = 224 'Å'}
orig_optind = 0
orig_optarg = 0x0
max_requests = 0
requests = 17722696
fcgi_fd = 7042240
request = {listen_socket = 1, fd = 0, id = 0, keep = 3, closed = 1, in_len = 0, in_pad = 0,
out_hdr = 0x0, out_pos = 0x3c2091102f0 "",
out_buf = "v\004\021\tÃ\003\000\000\000\006\000\000\000\000\000\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\nSet-Cookie: sess_odi_sid=o7fjrtnnpohsuqg7a7114b"...,
reserved = '\000' <repeats 15 times>, env = 0x0}
fpm_config = 0x0
fpm_prefix = 0x0
---Type <return> to continue, or q <return> to quit---
fpm_pid = 0x3c20911266b ""
test_conf = 0
php_information = 0
__func__ = "main"
Previous Comments:
------------------------------------------------------------------------
[2012-02-07 10:58:06] flatline at hardwired dot hu
Full backtrace with suhosin.so:
(gdb) thread apply all bt full
Thread 1 (Thread 18218):
#0 zend_mm_remove_from_free_list (heap=0xe40ab0, mm_block=0x1c85988) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_alloc_canary.c:880
index = 9
rp = 0x9
cp = 0x1c85988
prev = 0x0
next = 0x0
#1 0x00000000006e4738 in _zend_mm_free_canary_int (heap=0xe40ab0, p=0x1c85960) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_alloc_canary.c:2133
mm_block = 0x1c85938
next_block = 0x1c85988
size = 80
#2 0x00000000006d0712 in zend_hash_apply_deleter (ht=0xe31168, p=0x1126638) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_hash.c:814
retval = 0x119b5e0
#3 0x00000000006d0998 in zend_hash_graceful_reverse_destroy (ht=0xe31168) at
/usr/src/php5/source/php5-5.3.10/Zend/zend_hash.c:850
p = 0x1c85988
#4 0x00000000006b7b0e in shutdown_executor () at
/usr/src/php5/source/php5-5.3.10/Zend/zend_execute_API.c:256
__orig_bailout = <incomplete type>
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__orig_bailout = <incomplete type>
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
__bailout = {{__jmpbuf = {14880736, 0, 1622845780, 3043182966, 18462176, 0, 18465520, 0},
__mask_was_saved = 0, __saved_mask = {__val = {2924002880, 830,
14944944, 0, 7227061, 0, 17601944, 0, 18074376, 0, 14944944, 0, 7227061, 0,
14944944, 0}}}}
---Type <return> to continue, or q <return> to quit---
#5 0x00000000006c4762 in zend_deactivate () at /usr/src/php5/source/php5-5.3.10/Zend/zend.c:963
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {428990512, 958, 14878784, 0, 1622845780, 3043182966, 18462176, 0},
__mask_was_saved = -40982188, __saved_mask = {__val = {
0 <repeats 12 times>, 18541400, 0, 0, 145}}}}
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {428990512, 958, 14878784, 0, 1622845780, 3043182966, 18462176, 0},
__mask_was_saved = -40982188, __saved_mask = {__val = {
0 <repeats 12 times>, 18541400, 0, 0, 145}}}}
__orig_bailout = 0x6c46dd
__bailout = {{__jmpbuf = {428990512, 958, 14878784, 0, 1622845780, 3043182966, 18462176, 0},
__mask_was_saved = -40982188, __saved_mask = {__val = {
0 <repeats 12 times>, 18541400, 0, 0, 145}}}}
__orig_bailout = 0x6c46dd
__bailout = {{__jmpbuf = {428990512, 958, 14878784, 0, 1622845780, 3043182966, 18462176, 0},
__mask_was_saved = -40982188, __saved_mask = {__val = {
0 <repeats 12 times>, 18541400, 0, 0, 145}}}}
__orig_bailout = 0x119c2f0
__bailout = {{__jmpbuf = {428990512, 958, 14878784, 0, 1622845780, 3043182966, 18462176, 0},
__mask_was_saved = -40982188, __saved_mask = {__val = {
0 <repeats 12 times>, 18541400, 0, 0, 145}}}}
__orig_bailout = 0x6c46dd
__bailout = {{__jmpbuf = {428990512, 958, 14878784, 0, 1622845780, 3043182966, 18462176, 0},
__mask_was_saved = -40982188, __saved_mask = {__val = {
0 <repeats 12 times>, 18541400, 0, 0, 145}}}}
__orig_bailout = 0x0
__bailout = {{__jmpbuf = {428990512, 958, 14878784, 0, 1622845780, 3043182966, 18462176, 0},
__mask_was_saved = -40982188, __saved_mask = {__val = {
0 <repeats 12 times>, 18541400, 0, 0, 145}}}}
#6 0x000000000066f3e5 in php_request_shutdown (dummy=0xe40ab0) at
/usr/src/php5/source/php5-5.3.10/main/main.c:1664
report_memleaks = 0 '\000'
#7 0x0000000000758ca0 in main (argc=18462176, argv=0x119c2f0) at
/usr/src/php5/source/php5-5.3.10/sapi/fpm/fpm/fpm_main.c:1886
primary_script = 0x1000000 "ÃÃe\237i\177ôh\023"
__bailout = {{__jmpbuf = {0, 0, 11849916, 0, 1996138836, 2988407700, 3, 0}, __mask_was_saved
= 2106370388, __saved_mask = {__val = {0, 0, 0, 0, 0, 0,
2967729693, 830, 0, 0, 2913949384, 830, 0, 0, 2967701282, 830}}}}
exit_status = 0
c = 29907336
file_handle = {type = ZEND_HANDLE_FILENAME, filename = 0x2 <Address 0x2 out of
bounds>,
opened_path = 0x119b500 "ż\235K\212w\216lÃ/xxxxx.hu/html/kat-origi.phtml",
handle = {fd = 0, fp = 0x0, stream = {handle = 0x0, isatty = 18169248, mmap = {
len = 0, pos = 0, map = 0x0, buf = 0x0, old_handle = 0x0, old_closer = 0}, reader =
0, fsizer = 0, closer = 0}}, free_filename = 0 '\000'}
orig_optind = 0
orig_optarg = 0x0
max_requests = 0
requests = 18583184
fcgi_fd = 0
request = {listen_socket = 1, fd = 0, id = 0, keep = 3, closed = 1, in_len = 0, in_pad = 0,
out_hdr = 0x0, out_pos = 0x3be1991e1c0 "\001\006",
out_buf = "FÄ\221\031ž\003\000\000\001\006\000\001\000\006\002\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\nSet-Cookie: sess_odi_sid=rlkoioa5p89rt75mbou02m"...,
reserved = "erticum.\000\000\000\000\000\000\000", env = 0x0}
fpm_config = 0x0
fpm_prefix = 0x0
---Type <return> to continue, or q <return> to quit---
fpm_pid = 0x3be19920522 ""
test_conf = 0
php_information = 0
__func__ = "main"
------------------------------------------------------------------------
[2012-02-07 10:50:05] flatline at hardwired dot hu
Sesser: Several sites run with different pools under php5-fpm. Lots of different codebases, it only
occurs with one of the hosted pages, with one specific file, when the result set is larger than the
allowed php memory_limit. Starts with a big search query, does lots of manipulation on the result
set, and when it gets back to the main file, segfaults.
Mainfile.php -> includes Searchfile.php -> data manipulation, hits memory limit -> gets
back to Mainfile.php and it immediately segfaults.
The script runs well 99,9% of the time, but when it bumps into the memory_limit, the segfault
occurs.
I'll get the full backtrace, I'm not sure about valgrind, but if you tell me the details,
I can get that too.
------------------------------------------------------------------------
[2012-02-07 10:03:02] sesser@php.net
"I don't know what you mean under "Do you have NO PHP code running on the
system?"
I just wanted to know how this crash happens:
a) one specific PHP file
b) nearly all files
c) by just requesting any file
(in case of C the most obvious reason would be some extension being compiled in
a different way than PHP itself - Debian e.g. for a long time compiled their PHP
with LFS support, but forgot to set this flag in PHP-DEV so all compiled
extensions had different struct sizes for some structs. And this caused crashes
e.g. in Suhosin.so)
------------------------------------------------------------------------
[2012-02-07 07:42:31] stas@php.net
Full backtrace (or even better, a run under valgrind if it's reproduceable) would
be helpful.
I'd also recommend trying without suhosin.so just to ensure the problem is not
there (second trace still shows it loading).
From the trace it looks like the fault is in _zval_ptr_dtor which doesn't look
like segfault as a result of allocator returning null - the argument is not null
and _zval_ptr_dtor is not usually called right after allocator. Does it also
crash if you set envt variable USE_ZEND_MM to 0 (that turns off Zend MM)?
------------------------------------------------------------------------
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
https://bugs.php.net/bug.php?id=60990
--
Edit this bug report at https://bugs.php.net/bug.php?id=60990&edit=1