Assertion failure: prop.isNativeProperty() && prop.propertyInfo().isDataProperty() && prop.propertyInfo().writable(), at /root/src/js/src/jit/VMFunctions.cpp:2058
Categories
(Core :: JavaScript Engine, defect, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox129 | --- | fixed |
People
(Reporter: nils.bars, Assigned: jandem)
References
(Blocks 3 open bugs)
Details
Attachments
(2 files)
Steps to reproduce:
This bug is flaky and must be executed multiple times in order to trigger the assert.
Checkout commit 15778b8c32f8535624fff2af36fc669e65a9af3 and invoke the js shell as follows:
/root/js-spidermonkey-shell --fast-warmup --fuzzing-safe --gc-zeal=22,98 <testcase>
Actual results:
Assertion failure: prop.isNativeProperty() && prop.propertyInfo().isDataProperty() && prop.propertyInfo().writable(), at /root/src/js/src/jit/VMFunctions.cpp:2058
Updated•4 months ago
|
Assignee | ||
Comment 1•4 months ago
|
||
The bug here seems to be that freezing/sealing a (prototype) object does not invalidate the megamorphic set-prop cache by bumping its generation counter.
We need to invalidate this cache because of a JS quirk: attempts to shadow a non-writable property on the proto chain must throw. This probably isn't security sensitive but just a correctness issue - the same thing can be achieved with a defineProperty
which is allowed to shadow properties on the proto chain.
Assignee | ||
Comment 2•4 months ago
|
||
Freezing an object will mark all data properties non-writable. These properties
then can't be shadowed anymore so we need to ensure add-property cache entries are
invalidated.
Updated•4 months ago
|
Assignee | ||
Updated•4 months ago
|
Updated•4 months ago
|
Comment 4•4 months ago
|
||
bugherder |
Description
•