Comment #2 on issue 2207 by [email protected]: Win64 d8 built with GYP
crashes during startup in release mode
http://code.google.com/p/v8/issues/detail?id=2207
Hi Ulan,
The fact that it is an optimization-related issue makes me think that the
compiler might remove the unused 'static_initializer' variable in
isolate.cc used to trigger 'Isolate::EnsureDefaultIsolate()' at static
initialization time (although its constructor has some side effects).
Before r11010 this initialization code was slightly different.
Before r11010 (in isolate.cc):
class IsolateInitializer {
public:
IsolateInitializer() {
Isolate::EnsureDefaultIsolate();
}
};
static IsolateInitializer* EnsureDefaultIsolateAllocated() {
// TODO(isolates): Use the system threading API to do this once?
static IsolateInitializer static_initializer;
return &static_initializer;
}
// This variable only needed to trigger static intialization.
static IsolateInitializer* static_initializer =
EnsureDefaultIsolateAllocated();
On r11010:
struct StaticInitializer {
StaticInitializer() {
Isolate::EnsureDefaultIsolate();
}
} static_initializer;
I suggest that you try to revert this specific part of the change. I don't
have the appropriate testing environment to try that. If this does not work
I will see if I can set it up.
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev