我在特定机器上运行PHP段错误,我已经测试了其他3台机器,但似乎都可以正常工作,但这个bug似乎与PHP密切相关,我想在这里分享它。
我的剧本(虽然复杂得多)就是这样。
WP_Query->post // StdClass
// some stuff happens
// Try to access WP_Query->post here causes a segfault
get_userdate( 3 );
// WP_Query->post is now inexplicably populated with a WP_User object,
// though get_userdata does not reference it in any way
“发生了一些事情”实际上是一个明显不相关的函数调用,它遵循这种模式
function a() {
// WP_Query->post is correct
// function body
// WP_Query->post is correct
return true;
}
// WP_Query->post is correct
a();
// accessing WP_Query->post causes a segfault
就像垃圾收集正在以某种方式删除对象的内存,尽管我尝试调用“gc_disable()”并且没有修复任何内容。
PHP版本:带有Suhosin-Patch(cli)的PHP 5.3.6-13ubuntu3.9(内置:2012年9月12日19:00:27) FPM:PHP 5.3.6-13ubuntu3.9(fpm-fcgi)(内置:2012年9月12日19:04:27)
我试过禁用PHP扩展(memcached,apc)无济于事。
我尝试了gdb回溯,错误似乎来自zend_std_read_property (object=0x1)
,虽然我真的得不到更多的信息,我认为因为PHP没有用'debug'编译。
这里的任何建议都会受到很大的影响,到目前为止,我已经对这个问题大打了12个小时!