diff --git a/.travis.yml b/.travis.yml index 1950db4..64a6823 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,40 +1,22 @@ -sudo: required dist: trusty +sudo: required -language: php - -php: - - 7.1 - - nightly - -matrix: - allow_failures: - - php: nightly +services: + - docker env: global: - - NO_INTERACTION=1 - - TEST_TIMEOUT=120 + - V8=6.3 matrix: - - V8=6.2 - - V8=6.2 TEST_PHP_ARGS=-m + - TAG=xenial-v8-63-php-71 + - TAG=xenial-v8-63-php-71 TEST_PHP_ARGS=-m + - TAG=xenial-v8-63-php-72 + - TAG=xenial-v8-63-php-72 TEST_PHP_ARGS=-m before_install: - - sudo add-apt-repository ppa:pinepain/libv8-${V8} -y - - sudo apt-get update -q - - sudo apt-get install -y libv8-${V8}-dev - - php -i - - php-config || true - -before_script: - - echo 'variables_order = "EGPCS"' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - phpize && ./configure && make + # docker on travis doesn't allow anything before FROM, let's fix that + - sed -i -e "s/\${TAG}/$TAG/g" Dockerfile && sed -i -e '1,2d' Dockerfile + - docker build -t ${TRAVIS_REPO_SLUG}:${V8}-${PHP} --build-arg TAG=${TAG} . script: - - sh -c "make test | tee result.txt" - - sh test-report.sh - -addons: - apt: - packages: - - valgrind + - docker run -e TEST_PHP_ARGS ${TRAVIS_REPO_SLUG}:${V8}-${PHP} bash -c "make test | tee result.txt; ./test-report.sh" diff --git a/.valgrind-docker.supp b/.valgrind-docker.supp new file mode 100644 index 0000000..58451bc --- /dev/null +++ b/.valgrind-docker.supp @@ -0,0 +1,11 @@ +{ + + Memcheck:Free + fun:free + fun:deallocate + fun:deallocate + fun:_M_destroy + fun:_M_dispose + fun:~basic_string + ... +} diff --git a/.valgrind-v8.supp b/.valgrind-v8.supp new file mode 100644 index 0000000..cd42837 --- /dev/null +++ b/.valgrind-v8.supp @@ -0,0 +1,6 @@ +{ + + Memcheck:Cond + fun:_ZN2v88internal20MarkCompactCollector20EmptyMarkingWorklistEv + ... +} diff --git a/.valgrindrc b/.valgrindrc new file mode 100644 index 0000000..55df76c --- /dev/null +++ b/.valgrindrc @@ -0,0 +1,3 @@ +--gen-suppressions=all +--suppressions=./.valgrind-v8.supp +--suppressions=./.valgrind-docker.supp diff --git a/CMakeLists.txt b/CMakeLists.txt index a1ff7df..e10f191 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,8 +3,8 @@ project(php-v8) # NOTE: This CMake file is just for syntax highlighting in CLion -include_directories(/usr/local/opt/v8@6.2/include) -include_directories(/usr/local/opt/v8@6.2/include/libplatform) +include_directories(/usr/local/opt/v8@6.3/include) +include_directories(/usr/local/opt/v8@6.3/include/libplatform) include_directories(/usr/local/include/php) include_directories(/usr/local/include/php/TSRM) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3924a39 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +ARG TAG=xenial-v8-63-php-72 + +FROM pinepain/php-v8-docker:${TAG} + +COPY . /root/php-v8 +COPY ./scripts/provision/.bashrc /root/.bashrc + +WORKDIR /root/php-v8 + +RUN php -i && php-config || true + +RUN phpize && ./configure && make diff --git a/README.md b/README.md index e7ab95d..15acebe 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ $source = new \V8\StringValue($isolate, "'Hello' + ', World!'"); $script = new \V8\Script($context, $source); $result = $script->run($context); -echo $result->toString($context)->value(), PHP_EOL; +echo $result->value(), PHP_EOL; ``` which will output `Hello, World!`. See how it's shorter and more readable than [that C++ version][v8-hello-world]? @@ -69,7 +69,7 @@ in your IDE and other code-analysis tools. ### Requirements #### V8 -You will need a recent v8 Google JavaScript engine version installed. At this time the extension is tested on 6.2.2. +You will need a recent v8 Google JavaScript engine version installed. At this time v8 >= 6.3.2 required. #### PHP This extension is PHP7-only. It works and tested with both PHP 7.0 and PHP 7.1. @@ -92,7 +92,7 @@ $ php --ri v8 While [pinepain/php](https://launchpad.net/~pinepain/+archive/ubuntu/php) PPA targets to contain all necessary extensions with dependencies, you may find -[pinepain/libv8-6.2](https://launchpad.net/~pinepain/+archive/ubuntu/libv8-6.2), +[pinepain/libv8-6.3](https://launchpad.net/~pinepain/+archive/ubuntu/libv8-6.3), [pinepain/libv8-experimental](https://launchpad.net/~pinepain/+archive/ubuntu/libv8-experimental) and [pinepain/php-v8](https://launchpad.net/~pinepain/+archive/ubuntu/php-v8) standalone PPAs useful. diff --git a/config.m4 b/config.m4 index 27af960..d68be07 100644 --- a/config.m4 +++ b/config.m4 @@ -19,7 +19,7 @@ if test "$PHP_V8" != "no"; then SEARCH_PATH="/usr/local /usr" SEARCH_FOR="include/v8.h" - V8_MIN_API_VERSION_STR=6.2.2 + V8_MIN_API_VERSION_STR=6.3.2 DESIRED_V8_VERSION=`echo "${V8_MIN_API_VERSION_STR}" | $AWK 'BEGIN { FS = "."; } { printf "%s.%s", [$]1, [$]2;}'` diff --git a/scripts/provision/provision.sh b/scripts/provision/provision.sh index c753748..078b469 100644 --- a/scripts/provision/provision.sh +++ b/scripts/provision/provision.sh @@ -5,7 +5,7 @@ echo Provisioning... # Add Ondřej Surý's PPA with co-installable PHP versions: sudo add-apt-repository -y ppa:ondrej/php # Add libv8 PPA: -sudo add-apt-repository ppa:pinepain/libv8-6.2 +sudo add-apt-repository ppa:pinepain/libv8-6.3 # Let's update packages list: sudo apt-get update @@ -19,7 +19,7 @@ sudo apt-get install -y git htop curl pkgconf # Build and development requirements -sudo apt-get install -y libv8-6.2 libv8-6.2-dev libv8-6.2-dbg +sudo apt-get install -y libv8-6.3 libv8-6.3-dev libv8-6.3-dbg sudo apt-get install -y dh-make valgrind sudo apt-get install -y libssl-dev openssl sudo apt-get install -y php7.1 php7.1-cli php7.1-dev php7.1-fpm diff --git a/scripts/test_v8/hello_world.cpp b/scripts/test_v8/hello_world.cpp index 6e4de96..7f767ac 100644 --- a/scripts/test_v8/hello_world.cpp +++ b/scripts/test_v8/hello_world.cpp @@ -78,7 +78,7 @@ int main(int argc, char* argv[]) { Local result = script->Run(); // Convert the result to an UTF8 string and print it. - String::Utf8Value utf8(result); + String::Utf8Value utf8(isolate, result); printf("%s\n", *utf8); } diff --git a/src/php_v8_exceptions.cc b/src/php_v8_exceptions.cc index a8fe314..0ec77e1 100644 --- a/src/php_v8_exceptions.cc +++ b/src/php_v8_exceptions.cc @@ -52,6 +52,7 @@ void php_v8_create_try_catch_exception(zval *return_value, php_v8_isolate_t *php const char *message = NULL; PHP_V8_DECLARE_LIMITS(php_v8_isolate); + PHP_V8_DECLARE_ISOLATE(php_v8_isolate); if ((try_catch == NULL) || (try_catch->Exception()->IsNull() && try_catch->Message().IsEmpty() && !try_catch->CanContinue() && try_catch->HasTerminated())) { if (limits->time_limit_hit) { @@ -68,10 +69,9 @@ void php_v8_create_try_catch_exception(zval *return_value, php_v8_isolate_t *php object_init_ex(return_value, ce); zend_update_property_string(php_v8_try_catch_exception_class_entry, return_value, ZEND_STRL("message"), message); } else { - v8::String::Utf8Value exception(try_catch->Exception()); - ce = php_v8_try_catch_exception_class_entry; - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK_NODECL(exception, message); + + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING_NODECL(isolate, message, try_catch->Exception()); object_init_ex(return_value, ce); zend_update_property_string(php_v8_try_catch_exception_class_entry, return_value, ZEND_STRL("message"), message); diff --git a/src/php_v8_message.cc b/src/php_v8_message.cc index 3c95f57..e616813 100644 --- a/src/php_v8_message.cc +++ b/src/php_v8_message.cc @@ -29,20 +29,18 @@ void php_v8_message_create_from_message(zval *return_value, php_v8_isolate_t *ph object_init_ex(return_value, this_ce); - v8::Isolate *isolate = php_v8_isolate->isolate; + PHP_V8_DECLARE_ISOLATE(php_v8_isolate); v8::Local context = isolate->GetEnteredContext(); /* v8::Message::Get */ if (!message->Get().IsEmpty()) { - v8::String::Utf8Value message_utf8(message->Get()); - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(message_utf8, message_chars); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, message_chars, message->Get()); zend_update_property_string(this_ce, return_value, ZEND_STRL("message"), message_chars); } /* v8::Message::GetSourceLine */ if (!message->GetSourceLine(context).IsEmpty()) { - v8::String::Utf8Value source_line_utf8(message->GetSourceLine(context).ToLocalChecked()); - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(source_line_utf8, source_line_chars); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, source_line_chars, message->GetSourceLine(context).ToLocalChecked()); zend_update_property_string(this_ce, return_value, ZEND_STRL("source_line"), source_line_chars); } @@ -54,8 +52,7 @@ void php_v8_message_create_from_message(zval *return_value, php_v8_isolate_t *ph /* v8::Message::GetScriptResourceName */ if (!message->GetScriptResourceName().IsEmpty() && !message->GetScriptResourceName()->IsUndefined()) { - v8::String::Utf8Value script_resource_name_utf8(message->GetScriptResourceName()); - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(script_resource_name_utf8, script_resource_name_chars); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, script_resource_name_chars, message->GetScriptResourceName()); zend_update_property_string(this_ce, return_value, ZEND_STRL("resource_name"), script_resource_name_chars); } diff --git a/src/php_v8_object.cc b/src/php_v8_object.cc index 79ddcb8..c7125c2 100644 --- a/src/php_v8_object.cc +++ b/src/php_v8_object.cc @@ -447,7 +447,7 @@ static PHP_METHOD(Object, setAccessor) { v8::Local local_object = php_v8_value_get_local_as(php_v8_value); v8::Local local_name = php_v8_value_get_local_as(php_v8_name); - PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(name, local_name); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, name, local_name); attributes = attributes ? attributes & PHP_V8_PROPERTY_ATTRIBUTE_FLAGS : attributes; settings = settings ? settings & PHP_V8_ACCESS_CONTROL_FLAGS : settings; @@ -574,7 +574,7 @@ static PHP_METHOD(Object, setNativeDataProperty) { v8::Local local_object = php_v8_value_get_local_as(php_v8_value); v8::Local local_name = php_v8_value_get_local_as(php_v8_name); - PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(name, local_name); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, name, local_name); attributes = attributes ? attributes & PHP_V8_PROPERTY_ATTRIBUTE_FLAGS : attributes; diff --git a/src/php_v8_object_template.cc b/src/php_v8_object_template.cc index 2274f8f..5cc44c9 100644 --- a/src/php_v8_object_template.cc +++ b/src/php_v8_object_template.cc @@ -245,7 +245,7 @@ static PHP_METHOD(ObjectTemplate, setAccessor) { v8::Local local_name = php_v8_value_get_local_as(php_v8_name); - PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(name, local_name); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, name, local_name); v8::AccessorNameGetterCallback getter; v8::AccessorNameSetterCallback setter = 0; diff --git a/src/php_v8_script_origin.cc b/src/php_v8_script_origin.cc index dcee26a..02c4f2b 100644 --- a/src/php_v8_script_origin.cc +++ b/src/php_v8_script_origin.cc @@ -27,11 +27,11 @@ extern void php_v8_create_script_origin(zval *return_value, v8::LocalGetIsolate(); /* v8::ScriptOrigin::ResourceName */ if (!origin.ResourceName().IsEmpty() && !origin.ResourceName()->IsUndefined()) { - v8::String::Utf8Value resource_name_utf8(origin.ResourceName()); - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(resource_name_utf8, resource_name_chars); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, resource_name_chars, origin.ResourceName()); zend_update_property_string(this_ce, return_value, ZEND_STRL("resource_name"), resource_name_chars); } @@ -57,8 +57,7 @@ extern void php_v8_create_script_origin(zval *return_value, v8::LocalIsUndefined()) { - v8::String::Utf8Value source_map_url_utf8(origin.SourceMapUrl()); - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(source_map_url_utf8, source_map_url_chars); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, source_map_url_chars, origin.SourceMapUrl()); zend_update_property_string(this_ce, return_value, ZEND_STRL("source_map_url"), source_map_url_chars); } } diff --git a/src/php_v8_stack_frame.cc b/src/php_v8_stack_frame.cc index 51edeea..27a2d53 100644 --- a/src/php_v8_stack_frame.cc +++ b/src/php_v8_stack_frame.cc @@ -22,7 +22,7 @@ zend_class_entry *php_v8_stack_frame_class_entry; #define this_ce php_v8_stack_frame_class_entry -void php_v8_stack_frame_create_from_stack_frame(zval *return_value, v8::Local frame) { +void php_v8_stack_frame_create_from_stack_frame(v8::Isolate *isolate, zval *return_value, v8::Local frame) { assert(!frame.IsEmpty()); @@ -41,23 +41,19 @@ void php_v8_stack_frame_create_from_stack_frame(zval *return_value, v8::LocalGetScriptName().IsEmpty()) { - v8::String::Utf8Value script_name_utf8(frame->GetScriptName()); - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(script_name_utf8, script_name_chars); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, script_name_chars, frame->GetScriptName()); zend_update_property_string(this_ce, return_value, ZEND_STRL("script_name"), script_name_chars); } /* v8::StackFrame::GetScriptNameOrSourceURL */ if (!frame->GetScriptNameOrSourceURL().IsEmpty()) { - v8::String::Utf8Value script_name_or_source_url_utf8(frame->GetScriptNameOrSourceURL()); - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(script_name_or_source_url_utf8, script_name_or_source_url_chars); - zend_update_property_string(this_ce, return_value, ZEND_STRL("script_name_or_source_url"), - script_name_or_source_url_chars); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, script_name_or_source_url_chars, frame->GetScriptNameOrSourceURL()); + zend_update_property_string(this_ce, return_value, ZEND_STRL("script_name_or_source_url"), script_name_or_source_url_chars); } /* v8::StackFrame::GetFunctionName */ if (!frame->GetFunctionName().IsEmpty()) { - v8::String::Utf8Value function_name_utf8(frame->GetFunctionName()); - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(function_name_utf8, function_name_chars); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, function_name_chars, frame->GetFunctionName()); zend_update_property_string(this_ce, return_value, ZEND_STRL("function_name"), function_name_chars); } diff --git a/src/php_v8_stack_frame.h b/src/php_v8_stack_frame.h index 01b8766..c3404a6 100644 --- a/src/php_v8_stack_frame.h +++ b/src/php_v8_stack_frame.h @@ -25,7 +25,7 @@ extern "C" { extern zend_class_entry* php_v8_stack_frame_class_entry; -extern void php_v8_stack_frame_create_from_stack_frame(zval *return_value, v8::Local frame); +extern void php_v8_stack_frame_create_from_stack_frame(v8::Isolate *isolate, zval *return_value, v8::Local frame); PHP_MINIT_FUNCTION(php_v8_stack_frame); diff --git a/src/php_v8_stack_trace.cc b/src/php_v8_stack_trace.cc index cdbf59b..d1f4d33 100644 --- a/src/php_v8_stack_trace.cc +++ b/src/php_v8_stack_trace.cc @@ -29,7 +29,7 @@ void php_v8_stack_trace_create_from_stack_trace(zval *return_value, php_v8_isola object_init_ex(return_value, this_ce); - v8::Isolate *isolate = php_v8_isolate->isolate; + PHP_V8_DECLARE_ISOLATE(php_v8_isolate); /* v8::StackTrace::GetFrames */ /* v8::StackTrace::GetFrame */ @@ -42,7 +42,7 @@ void php_v8_stack_trace_create_from_stack_trace(zval *return_value, php_v8_isola zval frame_zv; for (uint32_t i = 0; i < frames_cnt; i++) { - php_v8_stack_frame_create_from_stack_frame(&frame_zv, trace->GetFrame(i)); + php_v8_stack_frame_create_from_stack_frame(isolate, &frame_zv, trace->GetFrame(i)); add_index_zval(&frames_array_zv, i, &frame_zv); } diff --git a/src/php_v8_string.cc b/src/php_v8_string.cc index 0e8b044..45761d6 100644 --- a/src/php_v8_string.cc +++ b/src/php_v8_string.cc @@ -59,7 +59,7 @@ static PHP_METHOD(String, value) v8::Local str_tpl = php_v8_value_get_local(php_v8_value); - v8::String::Utf8Value str(str_tpl); + v8::String::Utf8Value str(isolate, str_tpl); PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(str, cstr); diff --git a/src/php_v8_symbol.cc b/src/php_v8_symbol.cc index b8e1831..143f125 100644 --- a/src/php_v8_symbol.cc +++ b/src/php_v8_symbol.cc @@ -69,7 +69,7 @@ static PHP_METHOD(Symbol, value) RETURN_EMPTY_STRING(); } - v8::String::Utf8Value str(local_name); + v8::String::Utf8Value str(isolate, local_name); PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(str, cstr); diff --git a/src/php_v8_template.cc b/src/php_v8_template.cc index b2667f0..150d36a 100644 --- a/src/php_v8_template.cc +++ b/src/php_v8_template.cc @@ -261,7 +261,7 @@ void php_v8_template_SetNativeDataProperty(v8::Isolate *isolate, v8::Local lo v8::Local local_name = php_v8_value_get_local_as(php_v8_name); - PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(name, local_name); + PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, name, local_name); phpv8::CallbacksBucket *bucket = php_v8_template->persistent_data->bucket("native_data_property_", local_name->IsSymbol(), name); data = v8::External::New(isolate, bucket); diff --git a/src/php_v8_value.h b/src/php_v8_value.h index 25a97b0..71c6102 100644 --- a/src/php_v8_value.h +++ b/src/php_v8_value.h @@ -87,20 +87,13 @@ extern php_v8_value_t *php_v8_get_or_create_value(zval *return_value, v8::Local< return; \ } -#define PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(cstr, v8_local_string_from) \ - v8::String::Utf8Value _v8_utf8_str_##cstr((v8_local_string_from)); \ - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(_v8_utf8_str_##cstr, cstr); \ +#define PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, cstr, v8_local_string_from) \ + v8::String::Utf8Value _v8_utf8_str_##cstr((isolate), (v8_local_string_from)); \ + PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(_v8_utf8_str_##cstr, cstr); \ -#define PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING_NODECL(cstr, v8_local_string_from) { \ - v8::String::Utf8Value _v8_utf8_str_##cstr((v8_local_string_from)); \ - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK_NODECL(_v8_utf8_str_##cstr, cstr); \ -} - -#define PHP_V8_SET_ZVAL_STRING_FROM_V8_STRING(zval_to, v8_local_string_from) { \ - v8::String::Utf8Value _v8_utf8_str((v8_local_string_from)); \ - PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK(_v8_utf8_str, _v8_utf8_cstr); \ - ZVAL_STRINGL((zval_to), _v8_utf8_cstr, _v8_utf8_str.length()); \ -} +#define PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING_NODECL(isolate, cstr, v8_local_string_from) \ + v8::String::Utf8Value _v8_utf8_str_##cstr((isolate), (v8_local_string_from)); \ + PHP_V8_CONVERT_UTF8VALUE_TO_STRING_WITH_CHECK_NODECL(_v8_utf8_str_##cstr, cstr); \ struct _php_v8_value_t { php_v8_isolate_t *php_v8_isolate; diff --git a/stubs/src/StringValue.php b/stubs/src/StringValue.php index 349776a..4d966c1 100644 --- a/stubs/src/StringValue.php +++ b/stubs/src/StringValue.php @@ -21,7 +21,7 @@ */ class StringValue extends NameValue { - const MAX_LENGTH = (1 << 28) - 16; + const MAX_LENGTH = (1 << 30) - 25; // It's (1 << 28) - 16 on x32 platform, but we don't run on x32. /** * @param Isolate $isolate diff --git a/tests/.testsuite.php b/tests/.testsuite.php index 351c65d..6bd07e0 100644 --- a/tests/.testsuite.php +++ b/tests/.testsuite.php @@ -303,7 +303,7 @@ public function dump_object_methods($object, array $arguments = [], FilterInterf public function need_more_time() { // NOTE: this check is a bit fragile but should fits our need - return isset($_ENV['TRAVIS']) && isset($_ENV['TEST_PHP_ARGS']) && $_ENV['TEST_PHP_ARGS'] == '-m'; + return isset($_ENV['TEST_PHP_ARGS']) && $_ENV['TEST_PHP_ARGS'] == '-m'; } public function is_memory_test() { diff --git a/tests/001-extension_info.phpt b/tests/001-extension_info.phpt index 17e8466..597fb0d 100644 --- a/tests/001-extension_info.phpt +++ b/tests/001-extension_info.phpt @@ -1,9 +1,9 @@ --TEST-- v8 extension info --SKIPIF-- - + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- --ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc TZ=UTC --INI-- date.timezone = "UTC" diff --git a/tests/004-ICU-Intl_numberFormat.phpt b/tests/004-ICU-Intl_numberFormat.phpt index 9601b78..59751b5 100644 --- a/tests/004-ICU-Intl_numberFormat.phpt +++ b/tests/004-ICU-Intl_numberFormat.phpt @@ -2,6 +2,8 @@ ICU - Intl.NumberFormat() --SKIPIF-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + --ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc TZ=UTC --INI-- date.timezone = "UTC" diff --git a/tests/ExceptionManager_createCreateMessage.phpt b/tests/ExceptionManager_createCreateMessage.phpt index 5277f60..3bbc75d 100644 --- a/tests/ExceptionManager_createCreateMessage.phpt +++ b/tests/ExceptionManager_createCreateMessage.phpt @@ -2,6 +2,8 @@ V8\ExceptionManager::createCreateMessage() --SKIPIF-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- -need_more_time()) { - echo 'skip Random bugs on travis at this time under valgrind'; -} -?> +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- -need_more_time()) { - echo 'skip Random bugs on travis at this time under valgrind'; -} -?> +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- value_matches_with_no_output($res, $obj); Fatal error: V8 OOM hit: location=invalid array length, is_heap_oom=yes - in %s/V8Script_Run_out_of_memory.php on line 44 + in %s/Script_Run_out_of_memory.php on line %d <--- Last few GCs ---> diff --git a/tests/Script_run_uncaught_exception.phpt b/tests/Script_run_uncaught_exception.phpt index 6810ec2..e14067f 100644 --- a/tests/Script_run_uncaught_exception.phpt +++ b/tests/Script_run_uncaught_exception.phpt @@ -2,6 +2,8 @@ V8\Script::run() - uncaught exception should not lead to leak --SKIPIF-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- + +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE-- +--ENV-- +HOME=/tmp/we-need-home-env-var-set-to-load-valgrindrc --FILE--