Closed Bug 243174 Opened 20 years ago Closed 20 years ago

browser crashes when searching at de.selfhtml.org [@ FreeArenaList ]

Categories

(Core :: JavaScript Engine, defect, P1)

x86
All
defect

Tracking

()

VERIFIED FIXED
mozilla1.7final

People

(Reporter: stefan.brandner, Assigned: brendan)

References

()

Details

(4 keywords, Whiteboard: fixed-aviary1.0)

Crash Data

Attachments

(7 files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7b) Gecko/20040421
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7b) Gecko/20040421

Go to the page http://de.selfhtml.org/
Press the link "SELFHTML Suche"
At the top left the search input appears.
Enter the word browser and press "Suchen"
A javscript windows pops up with a ok button.
After pressing ok the browser crashes.

Reproducible: Always
Steps to Reproduce:
1.Go to the page http://de.selfhtml.org/ and press the link "SELFHTML Suche"
2. Enter the word browser at the search input
3. after press "Suchen" a javascript window pops up
4. when pressing ok the browser crashes 

Actual Results:  
browser crash

Expected Results:  
should show the search results instead

program error:
mozilla.exe has generated errors and will be closed by Windows.
You will need to restart the program.

An error log is being created.
Confirming with Mozilla trunk build 2004050907 on WinNT4.

Crash happens, access violation at c0000005. I cannot provide TB IDs because my
installer build doesn't contain TB -- once again.

Please add the keyword crash.
also crashing on Linux using FF 20040510, but Talkback doesn't popup.

(Starting mozilla.org Firefox in GDB probably gives a corrupt stack so it's not
relevant, crashes in nsMUTF7ToUnicode::nsMUTF7ToUnicode... I mention it in case
others see this too)
Keywords: crash, stackwanted
OS: Windows 2000 → All
free_dbg_lk(void * 0x03bc2ff8, int 1) line 1066 + 60 bytes
_free_dbg(void * 0x03bc2ff8, int 1) line 1001 + 13 bytes
free(void * 0x03bc2ff8) line 956 + 11 bytes
FreeArenaList(JSArenaPool * 0x0012c76c, JSArena * 0x0012c76c, int 1) line 331 +
10 bytes
JS_FinishArenaPool(JSArenaPool * 0x0012c76c) line 437 + 15 bytes
js_ExecuteRegExp(JSContext * 0x02c5dc00, JSRegExp * 0x03bcb4b0, JSString *
0x03b96678, unsigned int * 0x0012c800, int 1, long * 0x0012c95c) line 3028 + 9 bytes
match_or_replace(JSContext * 0x02c5dc00, JSObject * 0x03b96680, unsigned int 1,
long * 0x03a7728c, int (JSContext *, long, GlobData *)* 0x010cafa0
match_glob(JSContext *, long, GlobData *), GlobData * 0x0012c848, long *
0x0012c95c) line 1152 + 27 bytes
str_match(JSContext * 0x02c5dc00, JSObject * 0x03b96680, unsigned int 1, long *
0x03a7728c, long * 0x0012c95c) line 1244 + 34 bytes
js_Invoke(JSContext * 0x02c5dc00, unsigned int 1, unsigned int 0) line 1281 + 23
bytes
js_Interpret(JSContext * 0x02c5dc00, long * 0x0012d930) line 3366 + 15 bytes
js_Invoke(JSContext * 0x02c5dc00, unsigned int 1, unsigned int 0) line 1301 + 13
bytes
js_Interpret(JSContext * 0x02c5dc00, long * 0x0012e8b4) line 3366 + 15 bytes
js_Invoke(JSContext * 0x02c5dc00, unsigned int 1, unsigned int 2) line 1301 + 13
bytes
js_InternalInvoke(JSContext * 0x02c5dc00, JSObject * 0x034fb9b8, long 55556544,
unsigned int 0, unsigned int 1, long * 0x0012eb14, long * 0x0012eb10) line 1378
+ 20 bytes
JS_CallFunctionValue(JSContext * 0x02c5dc00, JSObject * 0x034fb9b8, long
55556544, unsigned int 1, long * 0x0012eb14, long * 0x0012eb10) line 3618 + 31 bytes
nsJSContext::CallEventHandler(JSObject * 0x034fb9b8, JSObject * 0x034fb9c0,
unsigned int 1, long * 0x0012eb14, long * 0x0012eb10) line 1292 + 33 bytes
nsJSEventListener::HandleEvent(nsJSEventListener * const 0x03a82738, nsIDOMEvent
* 0x03a562d0) line 174 + 51 bytes
nsEventListenerManager::HandleEventSubType(nsListenerStruct * 0x03a827f8,
nsIDOMEvent * 0x03a562d0, nsIDOMEventTarget * 0x03a7b478, unsigned int 4,
unsigned int 7) line 1434 + 20 bytes
nsEventListenerManager::HandleEvent(nsEventListenerManager * const 0x03a83210,
nsIPresContext * 0x03a54af0, nsEvent * 0x0012f1b0, nsIDOMEvent * * 0x0012ee9c,
nsIDOMEventTarget * 0x03a7b478, unsigned int 7, nsEventStatus * 0x0012f698) line
1529
nsGenericElement::HandleDOMEvent(nsIPresContext * 0x03a54af0, nsEvent *
0x0012f1b0, nsIDOMEvent * * 0x0012ee9c, unsigned int 7, nsEventStatus *
0x0012f698) line 1959
nsHTMLInputElement::HandleDOMEvent(nsIPresContext * 0x03a54af0, nsEvent *
0x0012f1b0, nsIDOMEvent * * 0x00000000, unsigned int 1, nsEventStatus *
0x0012f698) line 1395 + 31 bytes
PresShell::HandleEventInternal(nsEvent * 0x0012f1b0, nsIView * 0x00000000,
unsigned int 1, nsEventStatus * 0x0012f698) line 6025 + 44 bytes
PresShell::HandleEventWithTarget(PresShell * const 0x031ba978, nsEvent *
0x0012f1b0, nsIFrame * 0x03a57bfc, nsIContent * 0x03a830d8, unsigned int 1,
nsEventStatus * 0x0012f698) line 5980 + 22 bytes
nsEventStateManager::CheckForAndDispatchClick(nsIPresContext * 0x03a54af0,
nsMouseEvent * 0x0012f8b8, nsEventStatus * 0x0012f698) line 2958 + 66 bytes
nsEventStateManager::PostHandleEvent(nsEventStateManager * const 0x02bbf6d0,
nsIPresContext * 0x03a54af0, nsEvent * 0x0012f8b8, nsIFrame * 0x03a57bfc,
nsEventStatus * 0x0012f698, nsIView * 0x03a8ffe8) line 1979 + 23 bytes
PresShell::HandleEventInternal(nsEvent * 0x0012f8b8, nsIView * 0x03a8ffe8,
unsigned int 1, nsEventStatus * 0x0012f698) line 6077 + 52 bytes
PresShell::HandleEvent(PresShell * const 0x031ba9ec, nsIView * 0x03a8ffe8,
nsGUIEvent * 0x0012f8b8, nsEventStatus * 0x0012f698, int 0, int & 1) line 5918 +
25 bytes
nsViewManager::HandleEvent(nsView * 0x03a8c4a0, nsGUIEvent * 0x0012f8b8, int 0)
line 2233
nsViewManager::DispatchEvent(nsViewManager * const 0x00f6ca00, nsGUIEvent *
0x0012f8b8, nsEventStatus * 0x0012f790) line 1973 + 20 bytes
HandleEvent(nsGUIEvent * 0x0012f8b8) line 79
nsWindow::DispatchEvent(nsWindow * const 0x03a8fdf4, nsGUIEvent * 0x0012f8b8,
nsEventStatus & nsEventStatus_eIgnore) line 1067 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f8b8) line 1088
nsWindow::DispatchMouseEvent(unsigned int 301, unsigned int 0, nsPoint *
0x00000000) line 5189 + 21 bytes
ChildWindow::DispatchMouseEvent(unsigned int 301, unsigned int 0, nsPoint *
0x00000000) line 5444
nsWindow::ProcessMessage(unsigned int 514, unsigned int 0, long 1310982, long *
0x0012fd7c) line 3975 + 28 bytes
nsWindow::WindowProc(HWND__ * 0x006b0540, unsigned int 514, unsigned int 0, long
1310982) line 1349 + 27 bytes
USER32! 77d13a50()
USER32! 77d13b1f()
USER32! 77d13d79()
USER32! 77d14374()
CWinThread::Run() line 487 + 11 bytes
CWinApp::Run() line 400
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char *
0x00142388, int 10) line 49 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00142388,
int 10) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 77e614c7()
TB43306E winxp
Confirmed using 2004050609 Nightly on Windows 2000.  Talkback ID: TB43435X
Please change status to: NEW
Now crashed with Mozilla trunk build 2004051108 on WinNT4.
TB-ID: TB47150Y
Attached file TB47150Y stack
Assignee: general → general
Component: Browser-General → JavaScript Engine
Keywords: stackwanted
QA Contact: general → pschwartau
Summary: browser crashes when searching at de.selfhtml.org → browser crashes when searching at de.selfhtml.org [@ FreeArenaList ]
testcase:
javascript:alert("-+16-+59-+66-+67-+80-+82-+143-+170-+176-+189-+308-+363-+364-+365-+377-+393-+404-+405-+419-+430-+641-+732-+754-+783-+786-+972-+977-+980-+982-+1010-+1011-+1027-+1028-+1039-+1040-+1074-+1084-+1086-+1098-+1267-+1296-+1305-+1367-+1371-+1379-+1480-+1481-+1482-+1484-+1510-+1526-+1565-+1568-+1574-+1577-+1604-+1632-+1638-+1643-+1657-+1708-+1722-+1941-+1948-+1955-+1965-+1966-+2027-+2039-+2040-+2041-+2048-+2054-+2059-+2090-+2091-+2092-+2105-+2118-+".match(eval("/\\+(3|4|7|21|47|49|53|54|56|57|58|59|60|61|62|64|67|69|72|73|74|76|78|80|84|91|95|96|99|118|120|141|142|145|147|148|149|151|152|160|164|169|170|171|173|174|175|176|181|183|185|186|188|189|190|191|193|200|201|202|204|205|207|208|209|211|214|216|221|223|226|229|230|231|233|237|239|249|250|252|255|258|260|261|267|269|270|278|280|281|290|291|293|294|295|296|297|298|299|300|301|302|303|306|307|308|309|311|313|317|319|321|322|328|329|338|342|343|345|347|349|352|359|360|364|366|367|368|370|373|376|377|378|379|380|381|384|385|386|387|388|389|390|393|394|396|397|398|399|400|402|403|416|418|419|420|423|424|425|428|429|430|432|440|442|444|445|446|448|449|629|643|646|647|649|652|658|668|680|681|682|683|684|703|706|720|722|731|733|736|737|738|741|744|745|749|752|753|754|755|763|786|803|806|807|808|812|829|831|843|844|845|846|847|848|849|851|854|855|856|858|859|860|861|863|866|867|868|869|870|871|875|876|877|878|879|881|882|883|884|885|886|888|889|890|891|892|893|894|895|896|897|898|900|901|903|904|906|908|910|911|912|913|914|915|916|918|919|921|970|971|972|973|980|986|987|988|991|998|1009|1011|1015|1016|1031|1037|1038|1039|1040|1045|1046|1051|1052|1053|1054|1057|1058|1060|1064|1069|1070|1071|1074|1075|1085|1089|1090|1091|1093|1094|1095|1096|1097|1101|1103|1107|1109|1110|1112|1115|1116|1117|1171|1172|1175|1183|1184|1233|1289|1296|1300|1307|1315|1317|1327|1367|1374|1384|1392|1393|1408|1409|1412|1428|1479|1480|1481|1482|1483|1484|1485|1486|1487|1488|1490|1491|1492|1493|1497|1510|1522|1524|1565|1566|1567|1568|1573|1574|1576|1582|1584|1586|1588|1591|1592|1593|1596|1599|1600|1604|1606|1615|1616|1617|1621|1625|1631|1632|1633|1636|1640|1643|1644|1645|1646|1648|1650|1652|1655|1656|1657|1658|1660|1661|1663|1669|1670|1671|1672|1673|1675|1676|1677|1679|1680|1683|1684|1685|1686|1687|1688|1689|1695|1697|1702|1703|1704|1705|1706|1711|1712|1713|1714|1716|1722|1725|1726|1731|1738|1744|1747|1748|1749|1750|1753|1757|1761|1762|1763|1764|1765|1766|1767|1769|1771|1772|1773|1774|1775|1776|1777|1778|1779|1780|1781|1782|1783|1784|1785|1786|1788|1789|1790|1791|1792|1793|1794|1796|1797|1798|1799|1801|1802|1803|1804|1805|1806|1807|1808|1809|1810|1811|1812|1815|1816|1817|1818|1821|1822|1823|1824|1825|1827|1828|1831|1835|1840|1844|1845|1849|1850|1852|1853|1854|1855|1856|1857|1858|1859|1860|1862|1866|1867|1874|1885|1886|1887|1890|1894|1897|1898|1903|1912|1913|1917|1923|1933|1940|1941|1944|1945|1946|1947|1948|1949|1950|1963|1964|1965|1967|1971|1972|1973|1974|1978|1983|1988|1990|1991|2001|2003|2013|2015|2020|2025|2026|2027|2029|2034|2039|2040|2041|2047|2048|2049|2050|2053|2054|2055|2057|2058|2059|2060|2061|2064|2067|2070|2073|2076|2079|2082|2085|2088|2090|2092|2093|2094|2095|2096|2098|2099|2100|2101|2102|2103|2105|2114|2119|2121|2122|2124|2128|2131|2132|21|170|177|190|191|291|982|1038|1655|1978|2090|2133|1983|783|1582|2102|6|14|53|65|66|67|68|72|85|88|95|96|97|121|126|145|148|154|160|184|188|219|220|258|267|277|289|292|295|297|304|317|318|322|332|342|343|353|354|367|373|378|381|384|398|402|418|419|425|428|438|643|662|665|673|675|705|706|803|876|973|988|1013|1015|1020|1047|1091|1171|1184|1317|1400|1401|1486|1572|1590|1591|1593|1600|1621|1632|1633|1635|1636|1638|1640|1648|1657|1958|1966|1969|1973|1983|2048|2061|2064|2067|2070|2073|2076|2079|2082|2085|2088|2091|2126|2127|2128|1063|986|16|59|66|67|80|82|143|170|176|189|308|363|364|365|377|393|404|405|419|430|641|732|754|783|786|972|977|980|982|1010|1011|1027|1028|1039|1040|1074|1084|1086|1098|1267|1296|1305|1367|1371|1379|1480|1481|1482|1484|1510|1526|1565|1568|1574|1577|1604|1632|1638|1643|1657|1708|1722|1941|1948|1955|1965|1966|2027|2039|2040|2041|2048|2054|2059|2090|2091|2092|2105|2118|1300|971|2047|2050|986|1632|2049|1184|2047)-/g")));

this is crashing Windows 2003 1.7 branch 20040515 for me: TB48397M
Status: UNCONFIRMED → NEW
Ever confirmed: true
Flags: blocking1.7?
Keywords: testcase
Assignee: general → brendan
Flags: blocking1.7? → blocking1.7+
Keywords: js1.5
Priority: -- → P1
Target Milestone: --- → mozilla1.7final
Status: NEW → ASSIGNED
Attached file JS shell testcase
Another jsregexp.c bug, looks like.  Can someone show that this regressed when
I landed rogerl's big rewrite (2003/10/22)?  I'd appreciate any purify or
valgrind help, too, although this is easily reproduced.  Must fix for 1.7, in
any event.

/be
I found the following two windows versions in archive.mozilla.org:

WFM: 	Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031007
Crash:	Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6a) Gecko/20031028

Maybe someone could narrow this time window with the Linux nightlies.
Naturally, I can't get valgrind working on FC1.

Timeless, anyone: purify or valgrind help?

/be
this is the only output I get from valgrind running the testcase in JS shell.

Invalid read of size 4
   at 0x804F962: JS_malloc (jsapi.c:1448)
   by 0x80C249B: js_InflateString (jsstr.c:2786)
   by 0x8052907: JS_BufferIsCompilableUnit (jsapi.c:3106)
   by 0x8049526: Process (js.c:378)
   by 0x317C3637: ???
 Address 0x7C32334E is not stack'd, malloc'd or (recently) free'd
no crash :Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6a) Gecko/ 20031021
crash: 20031022
Attached file valgrind log
this is a (more useful) log from invoking the testcase from the commandline
rather than pasting it into an interactive session.
Assertion failure: a->base <= a->avail && a->avail <= a->limit, at jsarena.c:345

+	a	0x018a74d8 {next=0xcdcdcdcd {next=??? base=??? limit=??? ...} 
base=0xcdcdcdcd limit=0x00000001 ...}	JSArena *
	a->avail	0xcdcdcdcd	unsigned long
	a->base	0xcdcdcdcd	unsigned long
	a->limit	0x00000001	unsigned long

 	ntdll.dll!DbgBreakPoint() 	
 	PURERT.DLL!_x_checks_timed_fn_entry()  + 0x16a3f3	
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!JS_Assert(const 
char * s=0x5116116c, const char * file=0x51161160, int ln=0x00000159)  Line 149 
+ 0x19	C
>	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!FreeArenaList
(JSArenaPool * pool=0x0013cd48, JSArena * head=0x0013cd48, int 
reallyFree=0x00000001)  Line 345 + 0x8f	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!JS_FinishArenaPool
(JSArenaPool * pool=0x0013cd48)  Line 480 + 0x39	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!js_ExecuteRegExp
(JSContext * cx=0x003681b8, JSRegExp * re=0x01734930, JSString * 
str=0x00369bb0, unsigned int * indexp=0x0013cdd4, int test=0x00000001, long * 
rval=0x0013cea0)  Line 3107 + 0x1b	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!match_or_replace
(JSContext * cx=0x003681b8, JSObject * obj=0x00369bc8, unsigned int 
argc=0x00000001, long * argv=0x0170842c, int (JSContext *, long, GlobData *)* 
glob=0x5113e8b6, GlobData * data=0x0013ce08, long * rval=0x0013cea0)  Line 1152 
+ 0x5d	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!str_match
(JSContext * cx=0x003681b8, JSObject * obj=0x00369bc8, unsigned int 
argc=0x00000001, long * argv=0x0170842c, long * rval=0x0013cea0)  Line 1244 + 
0x7c	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!js_Invoke
(JSContext * cx=0x003681b8, unsigned int argc=0x00000001, unsigned int 
flags=0x00000000)  Line 1281 + 0x62	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!js_Interpret
(JSContext * cx=0x003681b8, long * result=0x0013d7b4)  Line 3370 + 0x39	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!js_Execute
(JSContext * cx=0x003681b8, JSObject * chain=0x00369748, JSScript * 
script=0x0170d858, JSStackFrame * down=0x00000000, unsigned int 
flags=0x00000000, long * result=0x0013d7b4)  Line 1507 + 0x2b	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!JS_ExecuteScript
(JSContext * cx=0x003681b8, JSObject * obj=0x00369748, JSScript * 
script=0x0170d858, long * rval=0x0013d7b4)  Line 3473 + 0x4f	C
 	js$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.exe!Load(JSContext * 
cx=0x003681b8, JSObject * obj=0x00369748, unsigned int argc=0x00000001, long * 
argv=0x017083fc, long * rval=0x0013d84c)  Line 679 + 0x16	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!js_Invoke
(JSContext * cx=0x003681b8, unsigned int argc=0x00000001, unsigned int 
flags=0x00000000)  Line 1281 + 0x62	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!js_Interpret
(JSContext * cx=0x003681b8, long * result=0x0013f168)  Line 3370 + 0x39	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!js_Execute
(JSContext * cx=0x003681b8, JSObject * chain=0x00369748, JSScript * 
script=0x01708340, JSStackFrame * down=0x00000000, unsigned int 
flags=0x00000000, long * result=0x0013f168)  Line 1507 + 0x2b	C
 	JS32$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.DLL!JS_ExecuteScript
(JSContext * cx=0x003681b8, JSObject * obj=0x00369748, JSScript * 
script=0x01708340, long * rval=0x0013f168)  Line 3473 + 0x4f	C
 	js$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.exe!Process(JSContext * 
cx=0x003681b8, JSObject * obj=0x00369748, char * filename=0x00000000)  Line 390 
+ 0x16	C
 	js$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.exe!ProcessArgs
(JSContext * cx=0x003681b8, JSObject * obj=0x00369748, char * * 
argv=0x0036510c, int argc=0x00000000)  Line 568 + 0x11	C
 	js$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.exe!main(int 
argc=0x00000000, char * * argv=0x0036510c, char * * envp=0x003631f0)  Line 2426 
+ 0x15	C
 	js$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.exe!mainCRTStartup()  
Line 400 + 0xe	C
 	PURERT.DLL!_x_checks_timed_fn_entry()  + 0x1eb5	
 	js$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.exe!00408059() 	
 	js$Purify_R_mozilla_js_src_WINNT5_@1__DBG_@OBJ.exe!0040804a() 	
 	kernel32.dll!GetCurrentDirectoryW()  + 0x44	
 	ntdll.dll!RtlGetFullPathName_U()  + 0x1ee	

fwiw 0xcdcdcdcd is crt: clean land (new, uninitd objects)

so the first assert was:
	JS_ASSERT(a->base <= a->avail && a->avail <= a->limit);
then one line executed:
	a->avail = a->base;
then another assert:
Assertion failure: (a)->avail <= (a)->limit, at jsarena.c:347
	JS_CLEAR_UNUSED(a);
Attached file purify log
note that the JS_Asserts correspond to [I] Starting thread 0xe30
Attachment #148783 - Attachment is patch: false
Just the ABW for people who don't like reading long purify logs:

[E] ABW: Array bounds write in memcpy {1 occurrence}
        Writing 16060 bytes to 0x018a3644 (81 bytes at 0x018a74af illegal)
        Address 0x018a3644 is 44 bytes into a 16023 byte block at 0x018a3618
        Address 0x018a3644 points to a HeapAlloc'd block in heap 0x00360000
        Thread ID: 0x3c8
        Error location
            memcpy+0xc           [R:\mozilla\js\src\WINNT5.1_DBG.OBJ\js32.dll 
ip=0x511547cf]
            PushBackTrackState+0x350 [r:\mozilla\js\src\jsregexp.c:1766 
ip=0x511166cf]
                        result = (REBackTrackData *) ((char *)gData-
>backTrackStack + offset);
                    }
                    gData->backTrackSP = result;
                    result->sz = gData->cursz;
                    gData->cursz = sz;
                
                    result->backtrack_op = op;
                    result->backtrack_pc = target;
                    result->cp = cp;
                    result->parenCount = parenCount;
                
                    result->precedingStateTop = gData->stateStackTop;
                    JS_ASSERT(gData->stateStackTop);
                    memcpy(result + 1, gData->stateStack,
             =>            sizeof(REProgState) * result->precedingStateTop);
                
                    if (parenCount != -1) {
                        result->parenIndex = parenIndex;
                        memcpy((char *)(result + 1) +
                               sizeof(REProgState) * result->precedingStateTop,
                               &x->parens[parenIndex],
                               sizeof(RECapture) * parenCount);
                        for (i = 0; i < parenCount; i++)
                            x->parens[parenIndex + i].index = -1;
                    }
                
                    return result;
                }
                
            ExecuteREBytecode+0xafe [r:\mozilla\js\src\jsregexp.c:2450 
ip=0x51113e76]
            MatchRegExp+0x146    [r:\mozilla\js\src\jsregexp.c:2832 
ip=0x51113296]
            js_ExecuteRegExp+0x3ff [r:\mozilla\js\src\jsregexp.c:2931 
ip=0x51112097]
            match_or_replace+0x7c6 [r:\mozilla\js\src\jsstr.c:1152 
ip=0x5113e2d0]
            str_match+0xe1       [r:\mozilla\js\src\jsstr.c:1244 ip=0x5113da84]
            js_Invoke+0x19f7     [r:\mozilla\js\src\jsinterp.c:1281 
ip=0x5108eb08]
            js_Interpret+0x1d5a3 [r:\mozilla\js\src\jsinterp.c:3370 
ip=0x510ae6d8]
            js_Execute+0x7b8     [r:\mozilla\js\src\jsinterp.c:1507 
ip=0x510907fe]
            JS_ExecuteScript+0x5e [r:\mozilla\js\src\jsapi.c:3473 ip=0x51017e80]
            Load+0xec            [r:\mozilla\js\src\js.c:679 ip=0x00401341]
            js_Invoke+0x19f7     [r:\mozilla\js\src\jsinterp.c:1281 
ip=0x5108eb08]
            js_Interpret+0x1d5a3 [r:\mozilla\js\src\jsinterp.c:3370 
ip=0x510ae6d8]
            js_Execute+0x7b8     [r:\mozilla\js\src\jsinterp.c:1507 
ip=0x510907fe]
            JS_ExecuteScript+0x5e [r:\mozilla\js\src\jsapi.c:3473 ip=0x51017e80]
            Process+0x2a1        [r:\mozilla\js\src\js.c:390 ip=0x00403f5e]
            ProcessArgs+0x42b    [r:\mozilla\js\src\js.c:568 ip=0x00403c35]
            main+0x1eb           [r:\mozilla\js\src\js.c:2426 ip=0x004037dd]
            mainCRTStartup+0x143 [f:\vs70builds\9466
\vc\crtbld\crt\src\crtexe.c:400 ip=0x00404367]
            _except_list+0x59    [R:\mozilla\js\src\WINNT5.1_DBG.OBJ\js.exe 
ip=0x00408059]
My tree is mostly current,
File: jsregexp.c	Status: Needs Patch

   Working revision:	3.82
is one rev out of date (a patch brendan made recently), the diffs attached
don't affect program control (it's essentially #if 0), but they do affect line
numbers (sorry). my jsconfig.h also defines a 151 version which is basically
150 + JS_HAS_XDR_FREEZE_THAW. This jsshell was built with that version. It
should not affect anything.
From the ABW:
-	gData->stateStack	0x018a74ec {continue_pc=0xcdcdcdcd <Bad Ptr> 
continue_op=0xcd 'Í' index=0xcdcd ...}	REProgState *
|+	continue_pc	0xcdcdcdcd <Bad Ptr>	unsigned char *
|	continue_op	0xcd 'Í'	unsigned char
|	index	0xcdcd	unsigned short
|	parenSoFar	0x00000001	unsigned int
\-	u	{quantifier={min=0xcdcd max=0xcdcd } assertion={top=0xcdcdcdcd 
sz=0xcdcdcdcd } }	__unnamed
 |+	quantifier	{min=0xcdcd max=0xcdcd }	__unnamed
 \+	assertion	{top=0xcdcdcdcd sz=0xcdcdcdcd }	__unnamed

-	gData	0x0013cd14 {cx=0x003681b8 {links={next=0x00365380 
{next=0x003681b8 prev=0x003681b8 } prev=0x00365380 {next=0x003681b8 
prev=0x003681b8 } } interpLevel=0x00000002 stackLimit=0x00000000 ...} 
regexp=0x01734930 {nrefs=0x00000001 flags=0x0002 cloneIndex=0x0000 ...} 
ok=0x00000001 ...}	REGlobalData *
|+	cx	0x003681b8 {links={next=0x00365380 {next=0x003681b8 
{next=0x00365380 prev=0x00365380 } prev=0x003681b8 {next=0x00365380 
prev=0x00365380 } } prev=0x00365380 {next=0x003681b8 {next=0x00365380 
prev=0x00365380 } prev=0x003681b8 {next=0x00365380 prev=0x00365380 } } } 
interpLevel=0x00000002 stackLimit=0x00000000 ...}	JSContext *
|+	regexp	0x01734930 {nrefs=0x00000001 flags=0x0002 cloneIndex=0x0000 ...}
	JSRegExp *
|	ok	0x00000001	int
|	start	0x0000015e	unsigned int
|	skipped	0x00000000	int
|+	cpbegin	0x0170c2d0 "-+16-+59-+66-+67-+80-+82-+143-+170-+176-+189-+308-
+363-+364-+365-+377-+393-+404-+405-+419-+430-+641-+732-+754-+783-+786-+972-+977-
+980-+982-+1010-+1011-+1027-+1028-+1039-+1040-+1074-+1084-+1086-+1098-+1267-
+1296-+1305-+1367-+1371-+1379-+1480-+1481-+1482-+1484-+1510-+1526-+1565-+1568-
+1574-+1577-+1604-+1632-+1638-+1643-+1657-+1708-+1722-+1941-+1948-+1955-+1965-
+1966-+2027-+2039-+2040-+2041-+2048-+2054-+2059-+2090-+2091-+2092-+2105-+2118-+"
	const unsigned short *
|+	cpend	0x0170c642 ""	const unsigned short *
|+	stateStack	0x018a74ec {continue_pc=0xcdcdcdcd <Bad Ptr> 
continue_op=0xcd 'Í' index=0xcdcd ...}	REProgState *
|	stateStackTop	0x0323	unsigned short
|	maxStateStack	0x0640	unsigned short
|+	backTrackStack	0x018a362c {sz=0x00000000 backtrack_pc=0x01736bbf "" 
backtrack_op=0x01 '&#9217;' ...}	REBackTrackData *
|+	backTrackSP	0x018a362c {sz=0x00000000 backtrack_pc=0x01736bbf "" 
backtrack_op=0x01 '&#9217;' ...}	REBackTrackData *
|	maxBackTrack	0x00003e80	unsigned int
|	cursz	0x00003ed4	unsigned int
\+	pool	{first={next=0x0189d678 {next=0x0189f658 {next=0x018a1638 
base=0x0189f668 limit=0x018a160b ...} base=0x0189d688 limit=0x0189f62b ...} 
base=0x0013cd58 limit=0x0013cd58 ...} current=0x018a3618 {next=0x00000000 
{next=??? base=??? limit=??? ...} base=0x018a362c limit=0x018a74af ...} 
arenasize=0x00001fa0 ...}	JSArenaPool
This code is ugly, with misnomers and cybercrud names all over.

The essential fix is to avoid assuming in PushBackTrackState that doubling the
backtrack stack size will suffice to hold the new result.

/be
Comment on attachment 148787 [details] [diff] [review]
proposed fix (non-minimal)

Want to get this into 1.8a tonight.

/be
Attachment #148787 - Flags: review?(shaver)
Thanks to timeless for the ABW info in comment 20.

/be
Comment on attachment 148787 [details] [diff] [review]
proposed fix (non-minimal)

r=shaver
Attachment #148787 - Flags: review?(shaver) → review+
Comment on attachment 148787 [details] [diff] [review]
proposed fix (non-minimal)

This should go in for 1.7 also.  I don't think it needs baking on the trunk; it
passes the JS testsuite and this bug's regression test.

/be
Attachment #148787 - Flags: approval1.7?
Comment on attachment 148787 [details] [diff] [review]
proposed fix (non-minimal)

a=asa (on behalf of drivers) for checkin to 1.7
Attachment #148787 - Flags: approval1.7? → approval1.7+
Fixed on 1.7 branch and trunk.  Yet another fix for the aviary branch to pick up.

/be
Status: ASSIGNED → RESOLVED
Closed: 20 years ago
Keywords: fixed1.7
Resolution: --- → FIXED
Whiteboard: fixed-aviary1.0
Verified as fix on latest 1.7 branch Win 06-24,Mac 06-30 & Linux 0629 builds.
Changing keywords from fixed1.7 to verified1.7.
Leave this bug status "as is" until this bug be verified on trunk again...
Keywords: fixed1.7verified1.7
thanks to be.
js1_5/Regress/regress-243174.js checked in.
Flags: testcase+
verified fixed.
Status: RESOLVED → VERIFIED
Crash Signature: [@ FreeArenaList ]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: