Segfault试图访问“已删除”的对象属性

时间:2012-09-21 09:17:44

标签: segmentation-fault php

我在特定机器上运行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个小时!

0 个答案:

没有答案