Closed Bug 1111194 Opened 10 years ago Closed 10 years ago

Assertion failure: [barrier verifier] Unmarked edge: TypeNewScript_function, at js/src/gc/Verifier.cpp:316

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
critical

Tracking

()

VERIFIED FIXED
mozilla37
Tracking Status
firefox36 --- unaffected
firefox37 --- verified
firefox-esr31 --- unaffected

People

(Reporter: decoder, Assigned: bhackett1024)

References

Details

(4 keywords, Whiteboard: [jsbugmon:update][fuzzblocker])

Attachments

(1 file)

The following testcase crashes on mozilla-central revision f14dcd1c8c0b (build with --enable-optimize --enable-posix-nspr-emulation --enable-valgrind --enable-gczeal --target=i686-pc-linux-gnu --enable-debug, run with --fuzzing-safe --thread-count=2): gczeal(4); function F(){} var obj = new F(); var itrCount = 10000; for(var i = 0; i < itrCount; i++) { assertEq(obj.value = i, i); } Backtrace: Program received signal SIGSEGV, Segmentation fault. 0x081f8956 in AssertMarkedOrAllocated (edge=...) at js/src/gc/Verifier.cpp:317 317 MOZ_CRASH(); #0 0x081f8956 in AssertMarkedOrAllocated (edge=...) at js/src/gc/Verifier.cpp:317 #1 0x082052af in js::gc::GCRuntime::endVerifyPreBarriers (this=0x965bab8) at js/src/gc/Verifier.cpp:365 #2 0x085de587 in AutoStopVerifyingBarriers (_notifier=..., isShutdown=false, rt=0x965b900, this=0xffffda04) at js/src/gc/GCInternals.h:114 #3 js::gc::GCRuntime::collect (this=0x965bab8, incremental=false, budget=..., gckind=js::GC_NORMAL, reason=JS::gcreason::DESTROY_CONTEXT) at js/src/jsgc.cpp:6247 #4 0x085df407 in js::gc::GCRuntime::gc (this=0x965bab8, gckind=js::GC_NORMAL, reason=JS::gcreason::DESTROY_CONTEXT) at js/src/jsgc.cpp:6312 #5 0x0852d276 in js::DestroyContext (cx=0x96758f0, mode=js::DCM_FORCE_GC) at js/src/jscntxt.cpp:261 #6 0x0852d508 in JS_DestroyContext (cx=0x96758f0) at js/src/jsapi.cpp:753 #7 0x0804bf95 in DestroyContext (cx=0x96758f0, withGC=true) at js/src/shell/js.cpp:5258 #8 0x08069877 in main (argc=0, argv=0x0, envp=0x0) at js/src/shell/js.cpp:5986 eax 0x0 0 ebx 0x9631ff4 157491188 ecx 0xf7e648ac -135903060 edx 0x0 0 esi 0xffffd4fc -11012 edi 0xf2234ea0 -232567136 ebp 0xffffd918 4294957336 esp 0xffffd4d0 4294956240 eip 0x81f8956 <AssertMarkedOrAllocated(EdgeValue const&)+342> => 0x81f8956 <AssertMarkedOrAllocated(EdgeValue const&)+342>: movl $0x7b,0x0 0x81f8960 <AssertMarkedOrAllocated(EdgeValue const&)+352>: call 0x804aa00 <abort@plt> Marking s-s because it's related to GC. Also marking as a fuzzblocker because this is a high frequency crasher (27 reports in the last hour).
=== Tinderbox Build Bisection Results by autoBisect === The "good" changeset has the timestamp "20141212092057" and the hash "2e0a0c0d7685". The "bad" changeset has the timestamp "20141212092456" and the hash "1d8b8c3d74e3". Likely regression window: https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=2e0a0c0d7685&tochange=1d8b8c3d74e3 jsfunfuzz & randorderfuzz hit this a lot too. Brian, is bug 1107145 a likely regressor?
Blocks: 1107145
Flags: needinfo?(bhackett1024)
OS: Linux → All
Hardware: x86 → All
Whiteboard: [jsbugmon:update,bisect][fuzzblocker] → [jsbugmon:update][fuzzblocker]
Attached patch patchSplinter Review
Hmm, bug 1107145 tried to simplify TypeObject barriers by calling writeBarrierPre on the parent TypeObject when its addendum changes. But this is wrong as this call doesn't do anything if the TypeObject has already been marked by the incremental GC.
Assignee: nobody → bhackett1024
Flags: needinfo?(bhackett1024)
Attachment #8536525 - Flags: review?(nmatsakis)
Keywords: sec-high
Attachment #8536525 - Flags: review?(nmatsakis) → review+
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla37
Status: RESOLVED → VERIFIED
JSBugMon: This bug has been automatically verified fixed.
Group: core-security
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: