Last modified: 2014-06-30 00:48:39 UTC

Wikimedia Bugzilla is closed!

Wikimedia migrated from Bugzilla to Phabricator. Bug reports are handled in Wikimedia Phabricator.
This static website is read-only and for historical purposes. It is not possible to log in and except for displaying bug reports and their history, links might be broken. See T68943, the corresponding Phabricator task for complete and up-to-date bug report information.
Bug 66943 - HHVM: Assertion in Scribunto_LuaEngine::callParserFunction() during uksort() call
HHVM: Assertion in Scribunto_LuaEngine::callParserFunction() during uksort() ...
Status: RESOLVED FIXED
Product: MediaWiki extensions
Classification: Unclassified
Scribunto (Other open bugs)
master
All All
: Unprioritized normal (vote)
: ---
Assigned To: Nobody - You can work on this!
: hhvm
Depends on:
Blocks: 67216
  Show dependency treegraph
 
Reported: 2014-06-22 06:40 UTC by Ori Livneh
Modified: 2014-06-30 00:48 UTC (History)
3 users (show)

See Also:
Web browser: ---
Mobile Platform: ---
Assignee Huggle Beta Tester: ---


Attachments

Description Ori Livneh 2014-06-22 06:40:50 UTC
Possibly a dupe of bug 66942. This one is with Eval.Jit=false.

$ php tests/phpunit/phpunit.php extensions/Scribunto
/PHPUnit 4.1.3 by Sebastian Bergmann.

Configuration read from /srv/mediawiki/tests/phpunit/suite.xml

....php: /srv/hhvm-dev/hphp/runtime/base/countable.h:88: void HPHP::assert_refcount_realistic_nz(int32_t): Assertion `count <= StaticValue || (uint32_t)count - 1 < (uint32_t)RefCountMaxRealistic' failed.
E........................................................   61 / 1500 (  4%)
.............................................................  122 / 1500 (  8%)
.............................................................  183 / 1500 ( 12%)
..................................FF...F....................php: /srv/hhvm-dev/hphp/runtime/base/mixed-array-defs.h:313: uint32_t HPHP::computeMaskFromNumElms(uint32_t): Assertion `n <= 0x7fffffffU' failed.
Aborted

Host: osmium
ProcessID: 43850
ThreadID: 7fe9079e4480
ThreadPID: 43850
Name: /usr/local/bin/php
Type: Aborted
Runtime: hhvm
Version: remotes/origin/HEAD-0-g79cc0491a586f6b49b3fe2f3586b612e9dda8dc9
DebuggerCount: 0

Arguments: tests/phpunit/phpunit.php extensions/Scribunto
ThreadType: CLI

# 0  ?? at php:0
# 1  __GI_raise at /build/buildd/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56
# 2  __GI_abort at /build/buildd/eglibc-2.19/stdlib/abort.c:91
# 3  __assert_fail_base at /build/buildd/eglibc-2.19/assert/assert.c:92
# 4  __assert_fail at /lib/x86_64-linux-gnu/libc.so.6:0
# 5  HPHP::ProxyArray::reseatable(HPHP::ArrayData const*, HPHP::ArrayData*) at php:0
# 6  HPHP::ProxyArray::EscalateForSort(HPHP::ArrayData*) at php:0
# 7  HPHP::f_uksort(HPHP::VRefParamValue const&, HPHP::Variant const&) at php:0
# 8  HPHP::Native::NativeFuncCaller::callInt64() at php:0
# 9  HPHP::Native::callFunc(HPHP::Func const*, void*, HPHP::TypedValue*, int, HPHP::TypedValue&) at php:0
# 10 HPHP::ExecutionContext::iopFCallBuiltin(unsigned char const*&) at php:0
# 11 void HPHP::ExecutionContext::dispatchImpl<false>() at php:0
# 12 HPHP::ExecutionContext::dispatch() at php:0
# 13 HPHP::ExecutionContext::enterVMAtFunc(HPHP::ActRec*, HPHP::ExecutionContext::StackArgsState) at php:0
# 14 HPHP::ExecutionContext::enterVM(HPHP::ActRec*, HPHP::ExecutionContext::StackArgsState, HPHP::Resumable*, HPHP::ObjectData*) at php:0
# 15 HPHP::ExecutionContext::invokeFunc(HPHP::TypedValue*, HPHP::Func const*, HPHP::Variant const&, HPHP::ObjectData*, HPHP::Class*, HPHP::VarEnv*, HPHP::StringData*, HPHP::ExecutionContext::InvokeFlags) at php:0
# 16 zend_call_function at php:0
# 17 luasandbox_call_php(lua_State*) at /srv/luasandbox/luasandbox.c:1641
# 18 lua_getinfo at /usr/lib/x86_64-linux-gnu/liblua5.1.so.0:0
# 19 lua_close at /usr/lib/x86_64-linux-gnu/liblua5.1.so.0:0
# 20 lua_getinfo at /usr/lib/x86_64-linux-gnu/liblua5.1.so.0:0
# 21 lua_getinfo at /usr/lib/x86_64-linux-gnu/liblua5.1.so.0:0
# 22 lua_yield at /usr/lib/x86_64-linux-gnu/liblua5.1.so.0:0
# 23 lua_pcall at /usr/lib/x86_64-linux-gnu/liblua5.1.so.0:0
# 24 luasandbox_call_helper at /srv/luasandbox/luasandbox.c:1356
# 25 zim_LuaSandboxFunction_call(int, HPHP::RefData*, HPHP::RefData**, HPHP::RefData*, int, void***) at /srv/luasandbox/luasandbox.c:1271
# 26 HPHP::zend_wrap_func(HPHP::ActRec*) at php:0
# 27 HPHP::ExecutionContext::iopNativeImpl(unsigned char const*&) at php:0
# 28 void HPHP::ExecutionContext::dispatchImpl<false>() at php:0
# 29 HPHP::ExecutionContext::dispatch() at php:0
# 30 HPHP::ExecutionContext::enterVMAtFunc(HPHP::ActRec*, HPHP::ExecutionContext::StackArgsState) at php:0
# 31 HPHP::ExecutionContext::enterVM(HPHP::ActRec*, HPHP::ExecutionContext::StackArgsState, HPHP::Resumable*, HPHP::ObjectData*) at php:0
# 32 HPHP::ExecutionContext::invokeFunc(HPHP::TypedValue*, HPHP::Func const*, HPHP::Variant const&, HPHP::ObjectData*, HPHP::Class*, HPHP::VarEnv*, HPHP::StringData*, HPHP::ExecutionContext::InvokeFlags) at php:0
# 33 HPHP::ObjectData::o_invoke(HPHP::String const&, HPHP::Variant const&, bool) at php:0
# 34 HPHP::f_hphp_invoke_method(HPHP::Variant const&, HPHP::String const&, HPHP::String const&, HPHP::Variant const&) at php:0
# 35 HPHP::Native::NativeFuncCaller::callInt64() at php:0
# 36 HPHP::Native::callFunc(HPHP::Func const*, void*, HPHP::TypedValue*, int, HPHP::TypedValue&) at php:0
# 37 HPHP::ExecutionContext::iopFCallBuiltin(unsigned char const*&) at php:0
# 38 void HPHP::ExecutionContext::dispatchImpl<false>() at php:0
# 39 HPHP::ExecutionContext::dispatch() at php:0
# 40 HPHP::ExecutionContext::enterVMAtFunc(HPHP::ActRec*, HPHP::ExecutionContext::StackArgsState) at php:0
# 41 HPHP::ExecutionContext::enterVM(HPHP::ActRec*, HPHP::ExecutionContext::StackArgsState, HPHP::Resumable*, HPHP::ObjectData*) at php:0
# 42 HPHP::ExecutionContext::invokeFunc(HPHP::TypedValue*, HPHP::Func const*, HPHP::Variant const&, HPHP::ObjectData*, HPHP::Class*, HPHP::VarEnv*, HPHP::StringData*, HPHP::ExecutionContext::InvokeFlags) at php:0
# 43 HPHP::ExecutionContext::invokeUnit(HPHP::TypedValue*, HPHP::Unit*) at php:0
# 44 ?? at php:0
# 45 ?? at php:0
# 46 HPHP::include_impl_invoke(HPHP::String const&, bool, char const*) at php:0
# 47 HPHP::hphp_invoke(HPHP::ExecutionContext*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, HPHP::Array const&, HPHP::VRefParamValue const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool, bool, bool) at php:0
# 48 HPHP::hphp_invoke_simple(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) at php:0
# 49 ?? at php:0
# 50 HPHP::execute_program(int, char**) at php:0
# 51 HPHP::emulate_zend(int, char**) at php:0
# 52 main at php:0
# 53 __libc_start_main at /build/buildd/eglibc-2.19/csu/libc-start.c:321
# 54 ?? at php:0
Comment 1 Tim Starling 2014-06-26 23:55:41 UTC
This is a result of the Make/Copy work that I did in proxy-array.cpp in <https://github.com/facebook/hhvm/commit/342b1193a6a15e32bd0e8bf1fad3678ae4e7ba17> . Make() gives a reference count of 1, but Copy() gives a reference count of zero, so if you want to use Copy() in the same place as Make() then you have to incref the result. ProxyArray::Copy() in particular has the diff:

 ProxyArray::Copy(const ArrayData* ad) {
-  return innerArr(ad)->copy();
+  return Make(innerArr(ad)->copy());
 }

This is doubly wrong, since ProxyArray::Copy() should return an array with a refcount of zero, which Make() doesn't do, and also Make() expects an argument with a refcount of 1, which innerArr(ad)->copy() doesn't give. The result is that arrays returned from EZC will cause a crash when you use them in certain ways, such as sorting them.
Comment 3 Tim Starling 2014-06-27 06:21:06 UTC
There is still an assertion from computeMaskFromNumElms() while running Scribunto tests, but it's probably a different bug. Let's split these up by backtrace rather than failure mode. Updated title accordingly.
Comment 4 Tim Starling 2014-06-30 00:48:39 UTC
Fix also submitted at https://github.com/facebook/hhvm/pull/3049

Note You need to log in before you can comment on or make changes to this bug.


Navigation
Links