Skip to content

v8 GC crash on node 4.4.7 #7654

@jeroenvollenbrock

Description

@jeroenvollenbrock
  • Version: v4.4.7 (nodesource)
  • Platform: Linux 4.1.13-HomeyOS-0.8.0 deps: update openssl to 1.0.1j #1 SMP Sun Dec 20 00:02:18 UTC 2015 armv7l GNU/Linux
  • OS: Debian Jessie based linux
  • Subsystem: V8 Garbage Collection

node sometimes crashes with a V8 Fatal error after running for about 5 hours:

Fatal error in ../deps/v8/src/heap/mark-compact.cc, line 3088

Check failed: large_object->IsHeapObject().

Stack Trace:

#0  0x00a18460 in v8::base::OS::Abort ()
#1  0x00a15938 in V8_Fatal ()
#2  0x005e69b4 in v8::internal::MarkCompactCollector::IsSlotInBlackObject ()
#3  0x005e8324 in v8::internal::SlotsBuffer::RemoveInvalidSlots ()
#4  0x005e84b8 in v8::internal::MarkCompactCollector::ClearInvalidStoreAndSlotsBufferEntries ()
#5  0x005f4abc in v8::internal::MarkCompactCollector::CollectGarbage ()
#6  0x005b19a4 in v8::internal::Heap::MarkCompact ()
#7  0x005c89f0 in v8::internal::Heap::PerformGarbageCollection ()

Registers at #2:

r0             0x0      0
r1             0x0      0
r2             0xad071c 11339548
r3             0xafb7dc 11515868
r4             0x0      0
r5             0x22ff088        36696200
r6             0x2301e4c        36707916
r7             0x10     16
r8             0x3fd    1021
r9             0x7ed1843c       2127660092
r10            0x1fd56f8        33380088
r11            0x7ed18424       2127660068
r12            0xf81ab4 16259764
sp             0x7ed183f8       0x7ed183f8
lr             0x5e69b4 6187444
pc             0x5e69b4 0x5e69b4 <_ZN2v88internal20MarkCompactCollector19IsSlotInBlackObjectEPNS0_4PageEPhPPNS0_10HeapObjectE+604>
cpsr           0x200f0010       537853968

I've made an attempt to debug this myself, it looks like the isHeapObject() check at line 3088 fails due to the value of r4 (0b0), expected r4 = (0b01). r4 contains the AND of r0 and 0b11, and r0 contains the return value of v8::internal::LargeObjectSpace::FindObject(Address a). Since r0 is also 0x0, this method apparently did not find the specified object in the large object space. When i take a look at the callstack, i can see this function was invoked through the ClearInvalidStoreAndSlotsBufferEntries call, which makes me wonder if the object should exist at all in the LargeObjectSpace.

Any help debugging the cause of this issue is appreciated. A coredump and remote debugging tools are available if required.

Metadata

Metadata

Assignees

No one assigned

    Labels

    v8 engineIssues and PRs related to the V8 dependency.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions