Closed Bug 831884 Opened 8 years ago Closed 8 years ago

Prevent calling MatchOnly on Win64 as a Stopgap

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: sstangl, Unassigned)

References

Details

Attachments

(2 files)

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.
This kills regexp performance, but is superior to the current state.
Attachment #703464 - Flags: review?(dvander)
Attachment #703464 - Flags: review?(dvander) → review+
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.
Adding #undef ENABLE_YARR_JIT to js/src/vm/RegExpObject.h and js/src/vm/RegExpObject.cpp works.
https://hg.mozilla.org/mozilla-central/rev/0c5b6c433508
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla21
Turn off YarrJIT on Win64 becasue xpcshell doesn't work during packing installer file.
Attachment #704777 - Flags: review?(dvander)
(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.
(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 → ---
(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
(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
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.
Attachment #704777 - Flags: review?(dvander) → review+
This was fixed by bug 830676.
Status: REOPENED → RESOLVED
Closed: 8 years ago8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.