Status: New
Owner: ----

New issue 3322 by [email protected]: Segmentation fault in GC (debug mode) with an invalid thread->context_
http://code.google.com/p/v8/issues/detail?id=3322

We got the following segfault when V8 was doing the GC. This segfault could be recreated, and the stacks always ends at v8::internal::HeapObject::map_word(this=0x79). Please see the backtrace at the bottom.

The invalid memory address comes from the thread->context_ (at frame 5). The pointer thread->context_ is invalid, and it is always 0x79 in the debug build (but the invalid address in the release build changes from time to time). The context_ became invalid after around 40 minutes.

1) This issue is found with v8-3.22.24.19. We can create this at will. It takes about 40 minutes to get it to fail. We are running with several isolates, and several scripts running in parallel.

2) We are trying to reduce our environment to something that we can provide you, but that will be difficult as there are several layers involved. In the mean time, are there any traces or dumps or other information that we can gather to help you resolve or make progress on this bug?

==
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffed5bd700 (LWP 6487)]
0x00007ffff6a36028 in v8::internal::HeapObject::map_word (this=0x79) at ../src/objects-inl.h:1225 1225 return MapWord(reinterpret_cast<uintptr_t>(READ_FIELD(this, kMapOffset)));
(gdb) bt
#0 0x00007ffff6a36028 in v8::internal::HeapObject::map_word (this=0x79) at ../src/objects-inl.h:1225 #1 0x00007ffff6a36002 in v8::internal::HeapObject::map (this=0x79) at ../src/objects-inl.h:1204 #2 0x00007ffff6cc1950 in v8::internal::ShortCircuitConsString (p=0x7fff923ab170) at ../src/mark-compact.cc:1315 #3 0x00007ffff6cc37cb in v8::internal::RootMarkingVisitor::MarkObjectByPointer (this=0x7fffed5bbca0, p=0x7fff923ab170) at ../src/mark-compact.cc:1825 #4 0x00007ffff6cc3749 in v8::internal::RootMarkingVisitor::VisitPointer (this=0x7fffed5bbca0, p=0x7fff923ab170) at ../src/mark-compact.cc:1813 #5 0x00007ffff6c733a4 in v8::internal::Isolate::Iterate (this=0x7fff923a8008, v=0x7fffed5bbca0, thread=0x7fff923ab168) at ../src/isolate.cc:480 #6 0x00007ffff6c735bd in v8::internal::Isolate::Iterate (this=0x7fff923a8008, v=0x7fffed5bbca0) at ../src/isolate.cc:507 #7 0x00007ffff6bc0544 in v8::internal::Heap::IterateStrongRoots (this=0x7fff923a8018, v=0x7fffed5bbca0, mode=v8::internal::VISIT_ONLY_STRONG) at ../src/heap.cc:6428 #8 0x00007ffff6cc4501 in v8::internal::MarkCompactCollector::MarkRoots (this=0x7fff923aac28, visitor=0x7fffed5bbca0) at ../src/mark-compact.cc:2103 #9 0x00007ffff6cc52fb in v8::internal::MarkCompactCollector::MarkLiveObjects (this=0x7fff923aac28) at ../src/mark-compact.cc:2355 #10 0x00007ffff6cbec66 in v8::internal::MarkCompactCollector::CollectGarbage (this=0x7fff923aac28) at ../src/mark-compact.cc:410 #11 0x00007ffff6bb0888 in v8::internal::Heap::MarkCompact (this=0x7fff923a8018, tracer=0x7fffed5bbee0) at ../src/heap.cc:1128 #12 0x00007ffff6bb0049 in v8::internal::Heap::PerformGarbageCollection (this=0x7fff923a8018, collector=v8::internal::MARK_COMPACTOR, tracer=0x7fffed5bbee0) at ../src/heap.cc:977 #13 0x00007ffff6baf41b in v8::internal::Heap::CollectGarbage (this=0x7fff923a8018, space=v8::internal::OLD_POINTER_SPACE, collector=v8::internal::MARK_COMPACTOR, gc_reason=0x7ffff6f73080 "StackGuard GC request", collector_reason=0x7ffff6f9108f "GC in old space requested") at ../src/heap.cc:713 #14 0x00007ffff6a3a2a1 in v8::internal::Heap::CollectGarbage (this=0x7fff923a8018, space=v8::internal::OLD_POINTER_SPACE, gc_reason=0x7ffff6f73080 "StackGuard GC request") at ../src/heap-inl.h:516 #15 0x00007ffff6baefea in v8::internal::Heap::CollectAllGarbage (this=0x7fff923a8018, flags=0, gc_reason=0x7ffff6f73080 "StackGuard GC request") at ../src/heap.cc:615 #16 0x00007ffff6b361b1 in v8::internal::Execution::HandleStackGuardInterrupt (isolate=0x7fff923a8008) at ../src/execution.cc:929 #17 0x00007ffff6daaef9 in v8::internal::__RT_impl_Runtime_Interrupt (args=..., isolate=0x7fff923a8008) at ../src/runtime.cc:9465 #18 0x00007ffff6daae86 in v8::internal::Runtime_Interrupt (args_length=0, args_object=0x7fffed5bc1a8, isolate=0x7fff923a8008) at ../src/runtime.cc:9462
#19 0x000000004080824e in ?? ()
#20 0x00000000408081a1 in ?? ()
   ....
#94 0x0000000000000000 in ?? ()
(gdb) f 5
#5 0x00007ffff6c733a4 in v8::internal::Isolate::Iterate (this=0x7fff923a8008, v=0x7fffed5bbca0, thread=0x7fff923ab168) at ../src/isolate.cc:480
480       v->VisitPointer(BitCast<Object**>(&(thread->context_)));
(gdb) list
475         v->VisitPointer(&pending);
476         thread->pending_exception_ = pending;  // In case GC updated it.
477       }
478       v->VisitPointer(&(thread->pending_message_obj_));
479 v->VisitPointer(BitCast<Object**>(&(thread->pending_message_script_)));
480       v->VisitPointer(BitCast<Object**>(&(thread->context_)));
481       Object* scheduled;
482       if (thread->scheduled_exception_->ToObject(&scheduled)) {
483         v->VisitPointer(&scheduled);
484         thread->scheduled_exception_ = scheduled;
(gdb) p (thread->context_)
$13 = (v8::internal::Context *) 0x79
(gdb) p &(thread->pending_message_script_)
$14 = (v8::internal::Object **) 0x7fff923ab198
(gdb) p thread
$15 = (v8::internal::ThreadLocalTop *) 0x7fff923ab168
(gdb) p *thread
$16 = {
  <v8::internal::Embedded> = {<No data fields>},
  members of v8::internal::ThreadLocalTop:
  isolate_ = 0x7fff923a8008,
  context_ = 0x79,
  thread_id_ = {
    static kInvalidId = -1,
    id_ = 1,
    static highest_thread_id_ = 13
  },
  pending_exception_ = 0x31d7a2704141,
  has_pending_message_ = false,
  rethrowing_message_ = false,
  pending_message_obj_ = 0x31d7a2704141,
  pending_message_script_ = 0x31d7a2704141,
  pending_message_start_pos_ = 124,
  pending_message_end_pos_ = 125,
  scheduled_exception_ = 0x31d7a2704141,
  external_caught_exception_ = false,
  save_context_ = 0x7fffed5bc4c0,
  catcher_ = 0x0,
  c_entry_fp_ = 0x7fffed5bc1a0 "\310\301[\355\377\177",
  handler_ = 0x7fffed5bc400 "",
  js_entry_sp_ = 0x7fffed5bc470 "\260\305[\355\377\177",
  external_callback_scope_ = 0x0,
  current_vm_state_ = v8::internal::GC,
  formal_count_ = 1397965275,
  failed_access_check_callback_ = 0x0,
  top_lookup_result_ = 0x0,
  ignore_out_of_memory_ = true,
  try_catch_handler_address_ = 0x7fffed5bc7a0 "\b\200:\222\377\177"
}


--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to