I also experience that sudden terminations of Icedove since some days.
Today I attached gdb to find the reason, got a stack trace and found this
bug report with identical results.

The crash is caused by a NULL pointer access: oldArray = this->objectSet
== NULL.

Details here:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7fbf740 (LWP 19091)]
js::ConstraintTypeSet::sweep (this=this@entry=0x7fffd6081580,
zone=0x7fffcf7a3000, oom=...) at
/build/icedove-tNL3mB/icedove-45.1.0/mozilla/js/src/vm/TypeInference.cpp:4077
(gdb)
(gdb) i s
#0  js::ConstraintTypeSet::sweep (this=this@entry=0x7fffd6081580,
zone=0x7fffcf7a3000, oom=...)
    at
/build/icedove-tNL3mB/icedove-45.1.0/mozilla/js/src/vm/TypeInference.cpp:4077
#1  0x00007ffff294a551 in JSScript::maybeSweepTypes
(this=0x7fffca2b8300, oom=oom@entry=0x7fffffffc2a0)
    at
/build/icedove-tNL3mB/icedove-45.1.0/mozilla/js/src/vm/TypeInference.cpp:4305
#2  0x00007ffff279e405 in SweepThing (oom=0x7fffffffc2a0,
script=<optimized out>) at
/build/icedove-tNL3mB/icedove-45.1.0/mozilla/js/src/jsgc.cpp:5361
#3  SweepArenaList<JSScript, js::AutoClearTypeInferenceStateOnOOM*>
(sliceBudget=..., arenasToSweep=0x7fffcf7a34f0)
    at /build/icedove-tNL3mB/icedove-45.1.0/mozilla/js/src/jsgc.cpp:5376
#4  js::gc::GCRuntime::sweepPhase (this=this@entry=0x7fffdf1683f8,
sliceBudget=...) at
/build/icedove-tNL3mB/icedove-45.1.0/mozilla/js/src/jsgc.cpp:5417
#5  0x00007ffff27a309f in js::gc::GCRuntime::incrementalCollectSlice
(this=this@entry=0x7fffdf1683f8, budget=...,
reason=reason@entry=JS::gcreason::REFRESH_FRAME)
    at /build/icedove-tNL3mB/icedove-45.1.0/mozilla/js/src/jsgc.cpp:6086
...
(gdb) p *this
$5 = {<js::TypeSet> = {flags = 3592946040, objectSet = 0x0},
constraintList = 0x0}
(gdb) l
4072            ObjectKey** oldArray = objectSet;
4073   
4074            clearObjects();
4075            objectCount = 0;
4076            for (unsigned i = 0; i < oldCapacity; i++) {
4077                ObjectKey* key = oldArray[i];
4078                if (!key)
4079                    continue;
4080                if (!IsObjectKeyAboutToBeFinalized(&key)) {
4081                    ObjectKey** pentry =

Reply via email to