Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Issue 7003108: "Deiceolate" Thread classes. (Closed)

Created:
9 years, 6 months ago by mnaganov (inactive)
Modified:
9 years, 6 months ago
Reviewers:
Vitaly Repeshko
CC:
v8-dev
Visibility:
Public.

Description

"Deiceolate" Thread classes. Thread class was receiving an isolate parameter by default. This approact violates the assumption that only VM threads can have an associated isolate, and can lead to troubles, because accessing the same isolate from different threads leads to race conditions. This was found by investigating mysterious failures of the CPU profiler layout test on Linux Chromium. As almost all threads were associated with some isolate, the sampler was trying to sample them. As a side effect, we have also fixed the DebuggerAgent test. Thanks to Vitaly for help in fixing isolates handling! R=vitalyr@chromium.org BUG=none TEST=none Committed http://code.google.com/p/v8/source/detail?r=8259

Patch Set 1 #

Total comments: 22
Unified diffs Side-by-side diffs Delta from patch set Stats (+159 lines, -208 lines) Patch
M include/v8.h View 1 chunk +1 line, -1 line 2 comments Download
M samples/shell.cc View 1 chunk +1 line, -1 line 0 comments Download
M src/api.cc View 1 chunk +4 lines, -3 lines 0 comments Download
M src/cpu-profiler.h View 1 chunk +1 line, -2 lines 0 comments Download
M src/cpu-profiler.cc View 2 chunks +3 lines, -4 lines 0 comments Download
M src/debug.h View 2 chunks +3 lines, -2 lines 0 comments Download
M src/debug.cc View 44 chunks +14 lines, -48 lines 4 comments Download
M src/debug-agent.h View 3 chunks +11 lines, -7 lines 0 comments Download
M src/debug-agent.cc View 2 chunks +5 lines, -3 lines 0 comments Download
M src/isolate.h View 1 chunk +1 line, -1 line 0 comments Download
M src/isolate.cc View 3 chunks +4 lines, -5 lines 0 comments Download
M src/log.cc View 4 chunks +6 lines, -5 lines 0 comments Download
M src/platform.h View 3 chunks +3 lines, -5 lines 0 comments Download
M src/platform-cygwin.cc View 3 chunks +3 lines, -6 lines 0 comments Download
M src/platform-freebsd.cc View 3 chunks +3 lines, -6 lines 0 comments Download
M src/platform-linux.cc View 3 chunks +3 lines, -6 lines 0 comments Download
M src/platform-macos.cc View 3 chunks +3 lines, -6 lines 0 comments Download
M src/platform-nullos.cc View 1 chunk +2 lines, -4 lines 0 comments Download
M src/platform-openbsd.cc View 1 chunk +1 line, -1 line 6 comments Download
M src/platform-solaris.cc View 2 chunks +1 line, -2 lines 4 comments Download
M src/platform-win32.cc View 1 chunk +1 line, -1 line 6 comments Download
M src/v8threads.h View 1 chunk +4 lines, -1 line 0 comments Download
M src/v8threads.cc View 1 chunk +3 lines, -2 lines 0 comments Download
M test/cctest/cctest.h View 1 chunk +2 lines, -2 lines 0 comments Download
M test/cctest/cctest.status View 1 chunk +0 lines, -3 lines 0 comments Download
M test/cctest/test-api.cc View 9 chunks +13 lines, -15 lines 0 comments Download
M test/cctest/test-circular-queue.cc View 2 chunks +5 lines, -7 lines 0 comments Download
M test/cctest/test-cpu-profiler.cc View 4 chunks +4 lines, -4 lines 0 comments Download
M test/cctest/test-debug.cc View 18 chunks +34 lines, -37 lines 0 comments Download
M test/cctest/test-lockers.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M test/cctest/test-platform-tls.cc View 1 chunk +1 line, -1 line 0 comments Download
M test/cctest/test-sockets.cc View 2 chunks +3 lines, -4 lines 0 comments Download
M test/cctest/test-thread-termination.cc View 3 chunks +9 lines, -6 lines 0 comments Download
M test/cctest/test-threads.cc View 4 chunks +5 lines, -5 lines 0 comments Download

Messages

Total messages: 4 (0 generated)
mnaganov (inactive)
9 years, 6 months ago (2011-06-10 05:55:59 UTC) #1
Vitaly Repeshko
"Deisolate" maybe? LGTM! http://codereview.chromium.org/7003108/diff/1/include/v8.h File include/v8.h (right): http://codereview.chromium.org/7003108/diff/1/include/v8.h#newcode3095 include/v8.h:3095: * Is V8 terminating JavaScript execution. ...
9 years, 6 months ago (2011-06-10 08:18:50 UTC) #2
mnaganov (inactive)
Thanks! On 2011/06/10 08:18:50, Vitaly Repeshko wrote: > "Deisolate" maybe? > This is a mixture ...
9 years, 6 months ago (2011-06-10 09:31:11 UTC) #3
mnaganov (inactive)
9 years, 6 months ago (2011-06-10 09:31:32 UTC) #4
http://codereview.chromium.org/7003108/diff/1/include/v8.h
File include/v8.h (right):

http://codereview.chromium.org/7003108/diff/1/include/v8.h#newcode3095
include/v8.h:3095: * Is V8 terminating JavaScript execution.
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Please update the comment.

Done.

http://codereview.chromium.org/7003108/diff/1/src/debug.cc
File src/debug.cc (left):

http://codereview.chromium.org/7003108/diff/1/src/debug.cc#oldcode799
src/debug.cc:799: ASSERT(Isolate::Current() == isolate_);
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Some of these asserts are useful as the isolate is not threaded through all
the
> calls here. The parts of the interface that are required to work without the
> isolate being current should be clearly marked. Otherwise, we risk e.g. mixing
> isolate heaps.

http://code.google.com/p/v8/issues/detail?id=1449

http://codereview.chromium.org/7003108/diff/1/src/debug.cc
File src/debug.cc (right):

http://codereview.chromium.org/7003108/diff/1/src/debug.cc#newcode2640
src/debug.cc:2640: isolate_->compilation_cache()->Disable();
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> As we discussed this is actually unsafe. ListenersChanged may be called from
any
> thread and touches the compilation cache. This means we need a compilation
cache
> mutex. Having the debugger mutex only doesn't seem to be enough. Please file a
> bug.

http://code.google.com/p/v8/issues/detail?id=1448

http://codereview.chromium.org/7003108/diff/1/src/platform-openbsd.cc
File src/platform-openbsd.cc (right):

http://codereview.chromium.org/7003108/diff/1/src/platform-openbsd.cc#newcode399
src/platform-openbsd.cc:399: Thread::Thread(Isolate* isolate, const Options&
options)
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Won't compile.

Thanks! Somehow, I have missed this file.

http://codereview.chromium.org/7003108/diff/1/src/platform-openbsd.cc#newcode407
src/platform-openbsd.cc:407: Thread::Thread(Isolate* isolate, const char* name)
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Ditto.

Done.

http://codereview.chromium.org/7003108/diff/1/src/platform-openbsd.cc#newcode427
src/platform-openbsd.cc:427: Thread::SetThreadLocal(Isolate::isolate_key(),
thread->isolate());
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Remove this line.

Done.

http://codereview.chromium.org/7003108/diff/1/src/platform-solaris.cc
File src/platform-solaris.cc (right):

http://codereview.chromium.org/7003108/diff/1/src/platform-solaris.cc#newcode385
src/platform-solaris.cc:385: isolate_(isolate),
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Won't compile.

Done.

http://codereview.chromium.org/7003108/diff/1/src/platform-solaris.cc#newcode391
src/platform-solaris.cc:391: Thread::Thread(Isolate* isolate, const char* name)
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Ditto.

Done.

http://codereview.chromium.org/7003108/diff/1/src/platform-win32.cc
File src/platform-win32.cc (right):

http://codereview.chromium.org/7003108/diff/1/src/platform-win32.cc#newcode1479
src/platform-win32.cc:1479: Thread::SetThreadLocal(Isolate::isolate_key(),
thread->isolate());
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Remove this line.

Hmm... I've actually did this once. Something has got messed up.
Fixed.

http://codereview.chromium.org/7003108/diff/1/src/platform-win32.cc#newcode1495
src/platform-win32.cc:1495: Thread::Thread(Isolate* isolate, const Options&
options)
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Won't compile.

Done.

http://codereview.chromium.org/7003108/diff/1/src/platform-win32.cc#newcode1503
src/platform-win32.cc:1503: Thread::Thread(Isolate* isolate, const char* name)
On 2011/06/10 08:18:50, Vitaly Repeshko wrote:
> Ditto.

Done.

Powered by Google App Engine
This is Rietveld 408576698