Bug 39060
Summary: | JIT asserts inside valgrind | ||
---|---|---|---|
Product: | WebKit | Reporter: | Balazs Kelemen <kbalazs> |
Component: | JavaScriptCore | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED WONTFIX | ||
Severity: | Normal | CC: | ashl1future, chanika, zherczeg |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | PC | ||
OS: | Linux |
Balazs Kelemen
For a long time, with JIT enabled builds I am facing with asserts when running either jsc or QtLauncher inside valgrind.
Test cases are simple:
$ valgrind WebKitBuild/Debug/bin/QtLauncher #and browsing a little
$ valgrind WebkitBuild/Debug/JavaScriptCore/jsc SunSpider/tests/sunspider-0.9.1/3d-cube.js
Both of them asserts here:
ASSERTION FAILED: !callLinkInfo->isLinked()
(../../../JavaScriptCore/jit/JIT.cpp:610 static void JSC::JIT::linkCall(JSC::JSFunction*, JSC::CodeBlock*, JSC::CodeBlock*, JSC::JITCode&, JSC::CallLinkInfo*, int, JSC::JSGlobalData*))
As I remember, in the early days of the JIT there were no such problems.
Of course, we can not be sure that the bug is not in valgrind.
Personally I think that it would be useful to clarify the problem.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Chani
same here. I've created a very minimal test case: http://chani.ca/webkit/valgrind/
all I have to do is make two should* calls and I get the assert failure.
Balazs Kelemen
I have found a solution: use "--smc-check=all".
This is needed because the JIT::linkCall function (and some other JIT staff) modifying the jitted code, so valgrind must check self modification.
Alternatively we could use valgrind's client request mechanism. That would be cheaper, but I am dubious about how the apple folks would feel about to introduce valgrind into the codebase (we should have at least a build option, and a define for valgrind).
Balazs Kelemen
I think we can leave with the --smc-check=all option, so I set this as wontfix.
Balazs Kelemen
*** Bug 34484 has been marked as a duplicate of this bug. ***