Last modified: 2014-05-23 23:31:06 UTC
My prototype hhvm hhbc compilation script fails when run on osmium with a seg fault. This behavior was not seen with a similar testing script on the core-hhvm.eqiad.wfmlabs labs instance which is using hhvm from our apt repository. Steps to reproduce: * ssh osmium * /home/bd808/scap-hhvm-compile An example core file is saved as osmium:/home/bd808/core-hhvm-compile Using gdb on the core file shows: Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00000000015ce57e in HPHP::HHBBC::res::Func HPHP::HHBBC::Index::resolve_func_helper<boost::iterator_range<std::__detail::_Node_const_iterator<std::pair<HPHP::StringData const* const, HPHP::HHBBC::php::Func const*>, false, true> > >(boost::iterator_range<std::__detail::_Node_const_iterator<std::pair<HPHP::StringData const* const, HPHP::HHBBC::php::Func const*>, false, true> > const&, HPHP::StringData const*) const () gdb> bt #0 0x00000000015ce57e in HPHP::HHBBC::res::Func HPHP::HHBBC::Index::resolve_func_helper<boost::iterator_range<std::__detail::_Node_const_iterator<std::pair<HPHP::StringData const* const, HPHP::HHBBC::php::Func const*>, false, true> > >(boost::iterator_range<std::__detail::_Node_const_iterator<std::pair<HPHP::StringData const* const, HPHP::HHBBC::php::Func const*>, false, true> > const&, HPHP::StringData const*) const () #1 0x00000000015c7e5b in HPHP::HHBBC::Index::resolve_func_fallback(HPHP::HHBBC::Context, HPHP::StringData const*, HPHP::StringData const*) const () #2 0x000000000155981a in HPHP::HHBBC::(anonymous namespace)::in(HPHP::HHBBC::ISS&, HPHP::HHBBC::bc::FPushFuncU const&) [clone .isra.636] () #3 0x000000000155daa2 in HPHP::HHBBC::(anonymous namespace)::dispatch(HPHP::HHBBC::ISS&, HPHP::HHBBC::Bytecode const&) () #4 0x000000000155f8df in HPHP::HHBBC::run(HPHP::HHBBC::Interp&, std::function<void (HPHP::HHBBC::php::Block&, HPHP::HHBBC::State const&)>) () #5 0x000000000152d514 in HPHP::HHBBC::(anonymous namespace)::do_analyze(HPHP::HHBBC::Index const&, HPHP::HHBBC::Context, HPHP::HHBBC::ClassAnalysis*) () #6 0x000000000152e57f in HPHP::HHBBC::analyze_class(HPHP::HHBBC::Index const&, HPHP::HHBBC::Context) () #7 0x000000000151c3d5 in folly::Optional<HPHP::HHBBC::(anonymous namespace)::WorkResult>* std::transform<__gnu_cxx::__normal_iterator<HPHP::HHBBC::(anonymous namespace)::WorkItem const*, std::vector<HPHP::HHBBC::(anonymous namespace)::WorkItem, std::allocator<HPHP::HHBBC::(anonymous namespace)::WorkItem> > >, folly::Optional<HPHP::HHBBC::(anonymous namespace)::WorkResult>*, HPHP::HHBBC::(anonymous namespace)::optimize(HPHP::HHBBC::Index&, HPHP::HHBBC::php::Program&)::{lambda()#2}::operator()() const::{lambda(HPHP::HHBBC::(anonymous namespace)::WorkItem const&)#1}>(__gnu_cxx::__normal_iterator<HPHP::HHBBC::(anonymous namespace)::WorkItem const*, std::vector<HPHP::HHBBC::(anonymous namespace)::WorkItem, std::allocator<HPHP::HHBBC::(anonymous namespace)::WorkItem> > >, HPHP::HHBBC::(anonymous namespace)::optimize(HPHP::HHBBC::Index&, HPHP::HHBBC::php::Program&)::{lambda()#2}::operator()() const::{lambda(HPHP::HHBBC::(anonymous namespace)::WorkItem const&)#1}, {lambda(HPHP::HHBBC::(anonymous namespace)::WorkItem const&)#1}, HPHP::HHBBC::(anonymous namespace)::optimize(HPHP::HHBBC::Index&, HPHP::HHBBC::php::Program&)::{lambda()#2}::operator()() const::{lambda(HPHP::HHBBC::(anonymous namespace)::WorkItem const&)#1}) () #8 0x000000000151c5a7 in std::thread::_Impl<std::_Bind_simple<std::vector<std::result_of<HPHP::HHBBC::(anonymous namespace)::optimize(HPHP::HHBBC::Index&, HPHP::HHBBC::php::Program&)::{lambda()#2}::operator()() const::{lambda(HPHP::HHBBC::(anonymous namespace)::WorkItem const&)#1} ({lambda()#2})>::type, std::allocator<HPHP::HHBBC::(anonymous namespace)::optimize(HPHP::HHBBC::Index&, HPHP::HHBBC::php::Program&)::{lambda()#2}::operator()() const::{lambda(HPHP::HHBBC::(anonymous namespace)::WorkItem const&)#1} ({lambda()#2})> > HPHP::HHBBC::parallel::map<HPHP::HHBBC::(anonymous namespace)::optimize(HPHP::HHBBC::Index&, HPHP::HHBBC::php::Program&)::{lambda()#2}::operator()() const::{lambda(HPHP::HHBBC::(anonymous namespace)::WorkItem const&)#1}, {lambda()#2}>({lambda(HPHP::HHBBC::(anonymous namespace)::WorkItem const&)#1}<std::result_of, std::allocator<std::result_of> > const&, std::vector)::{lambda()#1} ()> >::_M_run() () #9 0x00007f847ef03bf0 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #10 0x00007f847f15e182 in start_thread (arg=0x7f826a7e6700) at pthread_create.c:312 #11 0x00007f847e66b30d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
Working version on core-hhvm: $ hhvm --version HipHop VM 3.0.1 (rel) Compiler: tags/HHVM-3.0.1-0-g97c0ac06000e060376fdac4a7970e954e77900d6 Repo schema: a1146d49c5ba0d6db903beb3a4ed8a3766fef182 Crashing version on osmium: $ hhvm --version HipHop VM 3.1.0-dev (rel) Compiler: heads/master-0-ga433ab4363ff173b79c44f31281e805d49ee4512 Repo schema: e27744b20b93f94ce8350cc8a1d5283932b3bb4d
Maybe it can be bisected ?
This is apparently fixed in the latest HHVM master (and in my dev branch, which was recently rebased).