Closed
Bug 831884
Opened 12 years ago
Closed 12 years ago
Prevent calling MatchOnly on Win64 as a Stopgap
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: sstangl, Unassigned)
References
Details
Attachments
(2 files)
1.04 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
1.87 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
Yarr's MatchOnly mode is completely broken on Win64. This goes even before Bug 820124: the erroneous code was introduced by 740015, then finally used by Bug 808245.
The fix to this will be done in Bug 826588, but in the meantime we're crashing Win64 users on nightly and aurora. I'll have a Win64 development box sometime soon, but until then we could mitigate the issue by just disabling MatchOnly calls for Win64 altogether. This would be a significant regexp performance degradation, but it beats crashing and is easy to implement.
Reporter | ||
Comment 1•12 years ago
|
||
This kills regexp performance, but is superior to the current state.
Attachment #703464 -
Flags: review?(dvander)
Updated•12 years ago
|
Attachment #703464 -
Flags: review?(dvander) → review+
Updated•12 years ago
|
Keywords: checkin-needed
Reporter | ||
Comment 2•12 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/0c5b6c433508
Note that this will make it seem like a number of Win64 regexp-related fuzz bugs are suddenly fixed: we should leave them open until the real fix in Bug 826588 is landed.
Updated•12 years ago
|
Keywords: checkin-needed
Comment 3•12 years ago
|
||
It seems that mozilla-inbound-win64 builds failed after the patch:
http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/mozilla-inbound-win64/1358473288/mozilla-inbound-win64-bm13-build1-build6767.txt.gz
Comment 4•12 years ago
|
||
Adding #undef ENABLE_YARR_JIT to js/src/vm/RegExpObject.h and js/src/vm/RegExpObject.cpp works.
Comment 5•12 years ago
|
||
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla21
Comment 6•12 years ago
|
||
Turn off YarrJIT on Win64 becasue xpcshell doesn't work during packing installer file.
Attachment #704777 -
Flags: review?(dvander)
Comment 7•12 years ago
|
||
(In reply to Makoto Kato from comment #6)
> Created attachment 704777 [details] [diff] [review]
> Turn off Yarr on Win64 due to packaing failure
>
> Turn off YarrJIT on Win64 becasue xpcshell doesn't work during packing
> installer file.
I have tried this method several days ago but it does not work due to linker error.
Reporter | ||
Comment 8•12 years ago
|
||
(In reply to Yuan Pengfei from comment #7)
> (In reply to Makoto Kato from comment #6)
> > Created attachment 704777 [details] [diff] [review]
> > Turn off Yarr on Win64 due to packaing failure
> >
> > Turn off YarrJIT on Win64 becasue xpcshell doesn't work during packing
> > installer file.
>
> I have tried this method several days ago but it does not work due to linker
> error.
What's the error? Did we miss wrapping some calls in an #ifdef?
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Target Milestone: mozilla21 → ---
Comment 9•12 years ago
|
||
(In reply to Sean Stangl from comment #8)
> (In reply to Yuan Pengfei from comment #7)
> > (In reply to Makoto Kato from comment #6)
> > > Created attachment 704777 [details] [diff] [review]
> > > Turn off Yarr on Win64 due to packaing failure
> > >
> > > Turn off YarrJIT on Win64 becasue xpcshell doesn't work during packing
> > > installer file.
> >
> > I have tried this method several days ago but it does not work due to linker
> > error.
>
> What's the error? Did we miss wrapping some calls in an #ifdef?
Error log:
https://tbpl.mozilla.org/php/getParsedLog.php?id=19032486&tree=Mozilla-Inbound&full=1
e:\builds\moz2_slave\m-in-w64\build\toolkit\mozapps\installer\packager.mk:871:0: command 'cd ../../dist && (cd firefox && rm -f omni.ja components/binary.manifest && grep -h '^binary-component' components/*.manifest > binary.manifest ; for m in components/*.manifest; do sed -e 's/^binary-component/#binary-component/' $m > tmp.manifest && mv tmp.manifest $m; done; zip -r9m omni.ja chrome chrome.manifest components/*.js components/*.xpt components/*.manifest modules res defaults greprefs.js jsloader jssubloader hyphenation update.locale -x chrome/icons/\* defaults/pref/channel-prefs.js defaults/pref/channel-prefs.js res/cursors/\* res/MainMenu.nib/\* \*/.mkdir.done && e:/builds/moz2_slave/m-in-w64/build/obj-firefox/dist/bin/xpcshell.exe -g "$PWD" -a "$PWD" -f e:/builds/moz2_slave/m-in-w64/build/toolkit/mozapps/installer/precompile_cache.js -e "populate_startupcache('startupCache.zip');" && rm -rf jsloader jssubloader && unzip -q startupCache.zip && rm startupCache.zip && zip -r9m omni.ja jsloader/resource/gre jssubloader/*/resource/gre && rm -rf jsloader jssubloader && e:/builds/moz2_slave/m-in-w64/build/obj-firefox/_virtualenv/Scripts/python.exe e:/builds/moz2_slave/m-in-w64/build/config/optimizejars.py --optimize e:/builds/moz2_slave/m-in-w64/build/obj-firefox/browser/installer/../../jarlog//en-US ./ ./ && mv binary.manifest components && printf "manifest components/binary.manifest\n" > chrome.manifest) && (cd firefox/webapprt && rm -f omni.ja; zip -r9m omni.ja chrome chrome.manifest components/*.js components/*.xpt components/*.manifest modules res defaults greprefs.js jsloader jssubloader hyphenation update.locale -x chrome/icons/\* defaults/pref/channel-prefs.js defaults/pref/channel-prefs.js res/cursors/\* res/MainMenu.nib/\* \*/.mkdir.done && e:/builds/moz2_slave/m-in-w64/build/obj-firefox/_virtualenv/Scripts/python.exe e:/builds/moz2_slave/m-in-w64/build/config/optimizejars.py --optimize e:/builds/moz2_slave/m-in-w64/build/obj-firefox/browser/installer/../../jarlog//en-US ./ ./) && (cd firefox && e:/builds/moz2_slave/m-in-w64/build/obj-firefox/_virtualenv/Scripts/python.exe e:/builds/moz2_slave/m-in-w64/build/config/createprecomplete.py)' failed, return code 5
e:\builds\moz2_slave\m-in-w64\build\toolkit\mozapps\installer\packager.mk:884:0: command 'C:/mozilla-build/python27/python.exe e:/builds/moz2_slave/m-in-w64/build/build/pymake/pymake/../make.py make-package-internal' failed, return code 2
e:\builds\moz2_slave\m-in-w64\build\config\rules.mk:582:0: command 'C:/mozilla-build/python27/python.exe e:/builds/moz2_slave/m-in-w64/build/build/pymake/pymake/../make.py libs' failed, return code 2
e:\builds\moz2_slave\m-in-w64\build\browser\build.mk:45:0: command 'C:/mozilla-build/python27/python.exe e:/builds/moz2_slave/m-in-w64/build/build/pymake/pymake/../make.py -C browser/installer' failed, return code 2
program finished with exit code 2
Comment 10•12 years ago
|
||
(In reply to Sean Stangl from comment #8)
> (In reply to Yuan Pengfei from comment #7)
> > (In reply to Makoto Kato from comment #6)
> > > Created attachment 704777 [details] [diff] [review]
> > > Turn off Yarr on Win64 due to packaing failure
> > >
> > > Turn off YarrJIT on Win64 becasue xpcshell doesn't work during packing
> > > installer file.
> >
> > I have tried this method several days ago but it does not work due to linker
> > error.
>
> What's the error? Did we miss wrapping some calls in an #ifdef?
I think RegExpShared::compile() doesn't generate bytecode due to ENABLE_YARR_JIT=1. So RegExpShared::executeMatchOnly() doesn't work on current code of Win64.
So we should turn off ENABLE_YARR_JIT on Win64 or fix YarrJIT
Comment 11•12 years ago
|
||
1. Simply turning off ENABLE_YARR_JIT in Makefile does not work because linker will complain missing some symbols.
2. Changeset 0c5b6c433508 causes error due to some runtime fault in libmozjs.
3. Adding #undef ENABLE_YARR_JIT to js/src/vm/RegExpObject.h and js/src/vm/RegExpObject.cpp works for me.
Updated•12 years ago
|
Attachment #704777 -
Flags: review?(dvander) → review+
Comment 12•12 years ago
|
||
This was fixed by bug 830676.
Status: REOPENED → RESOLVED
Closed: 12 years ago → 12 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•