Closed Bug 783895 Opened 12 years ago Closed 1 year ago

Assertion failure: src->length() > 0 && chars[0] == '(', at js/src/jsfun.cpp:632 reading source of function whose source file has since changed

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect

Tracking

()

RESOLVED WONTFIX

People

(Reporter: neil, Unassigned)

Details

(Keywords: assertion, Whiteboard: [js:p2])

I am used to working with the XUL cache disabled. In this configuration, all XUL, DTD and JS files *used* to be reparsed every time they were opened. (Fortunately I don't edit .properties files so often.)

I was trying to fix a bug in SeaMonkey's preferences. This required adding a new string to the XUL and DTD and tweaking the JS code to use it. I edited the code, reopened Preferences... and the bug was still there, but with the new string. Confused, I added in dump()s and alert()s and they never fired. So I opened the Error Console and dumped the source of all the relevant functions to verify that they had in fact changed.

Except JS asserted on me when I tried, because it was actually caching the functions behind my back, together with their source locations. Of course the source no longer existed at those locations because I had edited it. Thus the assertion.

I poked around and found that this bug does also happen when the XUL cache is enabled. Of course in this case my new string would not have shown up so I would never have thought to try to dump the source of the functions...
Whiteboard: [js:p2]
Yes, this is certainly a danger of lazily reading sources for |Function.toString| calls.
Assignee: general → nobody
QA Whiteboard: qa-not-actionable

In the process of migrating remaining bugs to the new severity system, the severity for this bug cannot be automatically determined. Please retriage this bug using the new severity system.

Severity: major → --
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.