WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 131356
REGRESSION(
r166678
): Dromaeo/cssquery-dojo.html crashes regularly
https://bugs.webkit.org/show_bug.cgi?id=131356
Summary
REGRESSION(r166678): Dromaeo/cssquery-dojo.html crashes regularly
Csaba Osztrogonác
Reported
2014-04-08 05:03:43 PDT
It crashes regularly on the Apple Mountain Lion and the EFL performance bots. Here is a backtrace from the EFL bot: Running Dromaeo/cssquery-dojo.html (46 of 128) error: Dromaeo/cssquery-dojo.html 1 0x7f775df41ae0 2 0x7f775e2cbff0 3 0x7f775dac18a7 JSC::speculationFromCell(JSC::JSCell*) 4 0x7f775dbc76c3 JSC::DFG::PredictionPropagationPhase::propagate(JSC::DFG::Node*) 5 0x7f775dbc9456 bool JSC::DFG::runAndLog<JSC::DFG::PredictionPropagationPhase>(JSC::DFG::PredictionPropagationPhase&) 6 0x7f775dbc9f1e JSC::DFG::performPredictionPropagation(JSC::DFG::Graph&) 7 0x7f775dbc6376 JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&) 8 0x7f775dbc6837 JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&, JSC::DFG::ThreadData*) 9 0x7f775db58674 JSC::DFG::compile(JSC::VM&, JSC::CodeBlock*, JSC::CodeBlock*, JSC::DFG::CompilationMode, unsigned int, JSC::Operands<JSC::JSValue, JSC::OperandValueTraits<JSC::JSValue> > const&, WTF::PassRefPtr<JSC::DeferredCompilationCallback>) 10 0x7f775dce8c29 11 0x7f770402f5d7 FAILED Finished: 600.570791 s --- After checking the bot history the first failure was on
r166690
:
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20%28Perf%29/builds/8494
But this build doesn't contain any JSC related change, maybe the following patch is the culprit -
http://trac.webkit.org/changeset/166678
(CodeBlockSet should be generational) Could you possibly check it?
Attachments
the patch.
(49.31 KB, patch)
2014-05-06 16:45 PDT
,
Mark Lam
ggaren
: review+
Details
Formatted Diff
Diff
patch 2: don't call the
(47.30 KB, patch)
2014-05-07 13:06 PDT
,
Mark Lam
ggaren
: review+
Details
Formatted Diff
Diff
perf-run 1
(40.54 KB, text/plain)
2014-05-07 13:07 PDT
,
Mark Lam
no flags
Details
perf-run 2
(40.89 KB, text/plain)
2014-05-07 13:07 PDT
,
Mark Lam
no flags
Details
perf-run 3
(40.95 KB, text/plain)
2014-05-07 13:08 PDT
,
Mark Lam
no flags
Details
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Filip Pizlo
Comment 1
2014-04-08 11:19:59 PDT
Yup I'll take a look.
Filip Pizlo
Comment 2
2014-04-08 11:20:58 PDT
Errr, I'll pass it along to MarkH.
Mark Hahnenberg
Comment 3
2014-04-08 13:24:41 PDT
I can't repro this on ToT (
r166932
) in debug on release on Mavericks.
Csaba Osztrogonác
Comment 4
2014-04-09 02:56:33 PDT
(In reply to
comment #3
)
> I can't repro this on ToT (
r166932
) in debug on release on Mavericks.
As I said it is a flakey crash on the Mountain Lion and EFL performance bots. I haven't seen this crash on Mavericks before. And it is flakey, so it doesn't crash always, see
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20%28Perf%29?numbuilds=200
for details.
Csaba Osztrogonác
Comment 5
2014-04-09 02:58:03 PDT
Here is a crash on Mavericks too -
http://build.webkit.org/builders/Apple%20Mavericks%20Release%20%28Perf%29/builds/1101
Csaba Osztrogonác
Comment 6
2014-04-24 03:45:47 PDT
Is there any plan to fix this serious DFG JIT bug? Or is this crash a feature not a bug? :) Apple Mountain Lion bot: (53 crashes / 200 builds)
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20%28Perf%29?numbuilds=200
Apple Mavericks bot: (6 crashes / 200 builds)
http://build.webkit.org/builders/Apple%20Mavericks%20Release%20%28Perf%29?numbuilds=200
EFL bot: (12 crashes / 200 builds)
http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2%20%28Perf%29?numbuilds=200
Alexey Proskuryakov
Comment 7
2014-04-24 09:16:56 PDT
<
rdar://problem/16712772
>
Mark Lam
Comment 8
2014-04-28 10:33:32 PDT
I was able to reproduce this with a release build of
r167815
by running the Dromaeo/cssquery-dojo.html benchmark only via run-perf-tests in a loop on the command line. Out of 100 runs, it only reproduced once. It's not very easily reproducible. Here are some data that I've collected from that one crash: Crashed Thread: 10 JSC Compilation Thread Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x00000001a1693c80 Thread 0:: Dispatch queue: com.apple.main-thread 0 ??? 0x000041d7c0634885 0 + 72394901506181 1 ??? 0x000041d7c06976b0 0 + 72394901911216 2 ??? 0x000041d800600dba 0 + 72395975036346 3 ??? 0x000041d7c0698705 0 + 72394901915397 4 ??? 0x000041d800600dba 0 + 72395975036346 5 ??? 0x000041d7c0693dd8 0 + 72394901896664 6 com.apple.JavaScriptCore 0x0000000109d0663d callToJavaScript + 321 7 com.apple.JavaScriptCore 0x0000000109c25773 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 35 (VM.h:376) 8 com.apple.JavaScriptCore 0x0000000109c0b9a8 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 440 (Interpreter.cpp:994) 9 com.apple.JavaScriptCore 0x0000000109a9cfaf JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, JSC::JSValue*) + 63 (Register.h:118) 10 com.apple.WebCore 0x000000010afd6489 WebCore::ScheduledAction::executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValue, WebCore::ScriptExecutionContext*) + 537 (JSMainThreadExecState.h:89) 11 com.apple.WebCore 0x000000010afd60f0 WebCore::ScheduledAction::execute(WebCore::Document*) + 144 (ScheduledAction.cpp:125) 12 com.apple.WebCore 0x000000010a6c7d80 WebCore::DOMTimer::fired() + 304 (InspectorInstrumentation.h:290) 13 com.apple.WebCore 0x000000010b18050f WebCore::ThreadTimers::sharedTimerFiredInternal() + 175 (ThreadTimers.cpp:135) 14 com.apple.WebCore 0x000000010b03582a WebCore::timerFired(__CFRunLoopTimer*, void*) + 58 (SharedTimerMac.mm:134) ... Thread 10 Crashed:: JSC Compilation Thread 0 com.apple.JavaScriptCore 0x0000000109dd2d6e JSC::speculationFromCell(JSC::JSCell*) + 46 (StructureIDTable.h:86) 1 com.apple.JavaScriptCore 0x0000000109b5ede3 JSC::DFG::PredictionPropagationPhase::propagate(JSC::DFG::Node*) + 1795 (DFGPredictionPropagationPhase.cpp:140) 2 com.apple.JavaScriptCore 0x0000000109b5d5ca JSC::DFG::PredictionPropagationPhase::run() + 106 (DFGPredictionPropagationPhase.cpp:623) 3 com.apple.JavaScriptCore 0x0000000109b5d4fc JSC::DFG::performPredictionPropagation(JSC::DFG::Graph&) + 44 (DFGCommon.h:68) 4 com.apple.JavaScriptCore 0x0000000109b5c57b JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&) + 427 (DFGPlan.cpp:228) 5 com.apple.JavaScriptCore 0x0000000109b5c1eb JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&, JSC::DFG::ThreadData*) + 299 (DFGPlan.cpp:155) 6 com.apple.JavaScriptCore 0x0000000109bc98b6 JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*) + 566 (Locker.h:43) 7 com.apple.JavaScriptCore 0x0000000109e648cf WTF::wtfThreadEntryPoint(void*) + 15 (ThreadingPthreads.cpp:168) 8 libsystem_pthread.dylib 0x00007fff863fe899 _pthread_body + 138 9 libsystem_pthread.dylib 0x00007fff863fe72a _pthread_start + 137 10 libsystem_pthread.dylib 0x00007fff86402fc9 thread_start + 13 The crashing site: inline Structure* StructureIDTable::get(StructureID structureID) { #if USE(JSVALUE64) return table()[structureID].structure; // <======= CRASHED here. #else return structureID; #endif } Probably called from: SpeculatedType speculationFromCell(JSCell* cell) { if (JSString* string = jsDynamicCast<JSString*>(cell)) { if (const StringImpl* impl = string->tryGetValueImpl()) { if (impl->isAtomic()) return SpecStringIdent; } return SpecStringVar; } return speculationFromStructure(cell->structure()); // <========== here } Probably called from: SpeculatedType speculationFromValue(JSValue value) { ... if (value.isCell()) return speculationFromCell(value.asCell()); // <============= here ... } Called from: void propagate(Node* node) // in DFGPredictionPropagationPhase.cpp { NodeType op = node->op(); bool changed = false; switch (op) { case JSConstant: case WeakJSConstant: { SpeculatedType type = speculationFromValue(m_graph.valueOfJSConstant(node)); // <============ here ... }
Mark Lam
Comment 9
2014-05-06 16:45:29 PDT
Created
attachment 230950
[details]
the patch. Still running perf numbers and regression tests.
Geoffrey Garen
Comment 10
2014-05-06 16:50:07 PDT
Comment on
attachment 230950
[details]
the patch. View in context:
https://bugs.webkit.org/attachment.cgi?id=230950&action=review
r=me
> Source/JavaScriptCore/bytecode/VariableWatchpointSet.h:82 > + SymbolTable* m_symbolTable;
Since this pointer is never null, and available at initialization time, it should be a reference.
Mark Lam
Comment 11
2014-05-06 16:55:25 PDT
Perf numbers for patch 1: Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, and AsmBench on albion (MacPro5,1). VMs tested: "Conf#1" at /Volumes/Data-HD/ws6/OpenSource/WebKitBuild/Release/jsc (
r168386
) "Conf#2" at /Volumes/Data-HD/ws4/OpenSource/WebKitBuild/Release/jsc (
r168386
) Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. Conf#1 Conf#2 SunSpider: 3d-cube 7.5020+-0.3457 ? 7.6741+-0.1966 ? might be 1.0230x slower 3d-morph 8.9777+-0.2195 ? 9.1365+-0.1589 ? might be 1.0177x slower 3d-raytrace 9.9604+-1.2744 9.8354+-0.3609 might be 1.0127x faster access-binary-trees 2.6372+-0.1254 ? 2.6925+-0.1240 ? might be 1.0210x slower access-fannkuch 8.8266+-0.1354 ? 8.8583+-0.1746 ? access-nbody 4.6670+-0.3378 4.6115+-0.2552 might be 1.0120x faster access-nsieve 5.5468+-0.2812 ? 5.5538+-0.5039 ? bitops-3bit-bits-in-byte 1.9026+-0.1427 1.8727+-0.1043 might be 1.0160x faster bitops-bits-in-byte 6.2463+-0.1104 ? 6.2834+-0.1303 ? bitops-bitwise-and 3.1055+-0.0812 3.0975+-0.1251 bitops-nsieve-bits 5.7509+-0.1477 5.5876+-0.0329 might be 1.0292x faster controlflow-recursive 2.7903+-0.1143 2.7787+-0.0587 crypto-aes 6.2498+-0.1735 6.1704+-0.2012 might be 1.0129x faster crypto-md5 3.7258+-0.0680 3.5211+-0.2136 might be 1.0582x faster crypto-sha1 3.4042+-0.1573 3.3726+-0.1576 date-format-tofte 12.7582+-0.3804 ? 13.0303+-0.3998 ? might be 1.0213x slower date-format-xparb 9.5333+-0.7105 ? 9.5780+-0.2291 ? math-cordic 4.6667+-0.0856 ^ 4.5335+-0.0272 ^ definitely 1.0294x faster math-partial-sums 10.1859+-0.1437 10.1238+-0.1186 math-spectral-norm 3.0679+-0.1119 3.0208+-0.1398 might be 1.0156x faster regexp-dna 11.3718+-0.6948 ? 11.5696+-0.2171 ? might be 1.0174x slower string-base64 6.0460+-0.1047 ? 6.1927+-0.2134 ? might be 1.0243x slower string-fasta 10.9633+-0.6559 ? 11.1175+-0.2064 ? might be 1.0141x slower string-tagcloud 15.3752+-0.4550 ? 15.4942+-0.5573 ? string-unpack-code 32.1638+-0.4690 31.4360+-0.8297 might be 1.0231x faster string-validate-input 7.7933+-0.2166 7.4625+-0.1963 might be 1.0443x faster <arithmetic> * 7.8930+-0.0717 7.8694+-0.0887 might be 1.0030x faster <geometric> 6.4147+-0.0583 6.3882+-0.0726 might be 1.0041x faster <harmonic> 5.3190+-0.0463 5.2823+-0.0695 might be 1.0070x faster Conf#1 Conf#2 LongSpider: 3d-cube 1306.7593+-30.8449 1301.7043+-7.7947 3d-morph 2131.5762+-4.3162 ? 2133.9419+-4.1465 ? 3d-raytrace 1400.3865+-10.0884 ? 1419.3524+-21.1943 ? might be 1.0135x slower access-binary-trees 1583.6116+-11.4021 ? 1595.5197+-18.9801 ? access-fannkuch 509.2729+-36.8005 ? 517.9512+-53.0950 ? might be 1.0170x slower access-nbody 1196.0980+-2.1604 1195.0439+-3.4533 access-nsieve 1558.3048+-17.3619 ? 1559.8978+-12.0591 ? bitops-3bit-bits-in-byte 57.0106+-1.0040 56.9750+-0.2721 bitops-bits-in-byte 372.7449+-8.3813 ? 376.0921+-9.1419 ? bitops-nsieve-bits 1130.4653+-4.6447 ? 1134.6368+-4.2862 ? controlflow-recursive 820.6756+-3.6188 819.9839+-2.9866 crypto-aes 1072.2081+-4.8776 ? 1075.9193+-7.8548 ? crypto-md5 1004.2381+-5.0437 ? 1005.9482+-8.6468 ? crypto-sha1 1103.2324+-7.2710 1099.3356+-3.6492 date-format-tofte 1118.8730+-5.9827 1118.3395+-20.3861 date-format-xparb 1554.7705+-80.6755 1535.5633+-19.8170 might be 1.0125x faster math-cordic 796.9058+-4.1443 795.8225+-1.0869 math-partial-sums 1202.4246+-8.1326 ? 1203.5470+-5.7826 ? math-spectral-norm 1232.6562+-6.2700 1232.4922+-3.3570 string-base64 562.1345+-3.5402 ? 562.1895+-5.6353 ? string-fasta 1054.0327+-22.7715 ? 1061.7597+-44.8150 ? string-tagcloud 381.4352+-5.5794 377.6240+-1.3713 might be 1.0101x faster <arithmetic> 1052.2644+-3.9071 ? 1053.6200+-3.4267 ? might be 1.0013x slower <geometric> * 882.3355+-1.9511 ? 883.5952+-5.4870 ? might be 1.0014x slower <harmonic> 536.9439+-2.2391 ? 537.3549+-3.8173 ? might be 1.0008x slower Conf#1 Conf#2 V8Spider: crypto 81.4258+-0.5603 ? 82.2731+-1.6852 ? might be 1.0104x slower deltablue 96.7683+-0.6843 ? 96.9927+-1.4237 ? earley-boyer 70.6422+-4.5454 68.6530+-0.6976 might be 1.0290x faster raytrace 43.5614+-2.7385 ? 43.6927+-1.9978 ? regexp 98.3039+-1.1022 98.2133+-1.2584 richards 100.3709+-1.7948 99.7380+-1.5467 splay 48.5545+-1.8844 ? 48.9492+-0.5514 ? <arithmetic> 77.0896+-1.0485 76.9303+-0.1635 might be 1.0021x faster <geometric> * 73.5127+-1.1436 73.3941+-0.1314 might be 1.0016x faster <harmonic> 69.6499+-1.2213 69.6013+-0.4017 might be 1.0007x faster Conf#1 Conf#2 Octane: encrypt 0.42437+-0.00096 ? 0.42522+-0.00368 ? decrypt 7.62092+-0.09164 7.60890+-0.02973 deltablue x2 0.41989+-0.00764 0.41638+-0.00490 earley 0.86726+-0.00893 0.86707+-0.01210 boyer 10.01611+-0.15971 9.96110+-0.10657 navier-stokes x2 7.37602+-0.00657 ? 7.38887+-0.05396 ? raytrace x2 2.65929+-0.03940 ? 2.67111+-0.07180 ? richards x2 0.21856+-0.01310 0.21790+-0.00899 splay x2 0.62119+-0.00973 ? 0.62205+-0.00364 ? regexp x2 69.05898+-0.81065 ? 69.55539+-0.93254 ? pdfjs x2 89.00096+-0.83621 88.68435+-0.18454 mandreel x2 95.14173+-0.93153 ? 95.74943+-0.85892 ? gbemu x2 81.61711+-2.28011 81.61419+-2.13115 closure 0.85617+-0.00257 ? 0.86326+-0.00551 ? jquery 10.67687+-0.03728 ? 10.68303+-0.03524 ? box2d x2 26.77140+-0.57604 ? 27.39102+-0.30221 ? might be 1.0231x slower zlib x2 708.64376+-1.13046 ? 708.65562+-4.65431 ? typescript x2 1213.06030+-7.00925 1206.13574+-19.91231 <arithmetic> 153.98800+-0.27380 153.62042+-0.81797 might be 1.0024x faster <geometric> * 12.19685+-0.08789 ? 12.21739+-0.05858 ? might be 1.0017x slower <harmonic> 1.28522+-0.02761 1.28302+-0.02412 might be 1.0017x faster Conf#1 Conf#2 Kraken: ai-astar 539.379+-3.134 538.202+-2.085 audio-beat-detection 201.835+-2.726 ? 201.948+-2.245 ? audio-dft 243.632+-2.064 242.710+-1.045 audio-fft 119.940+-1.410 ? 119.995+-1.552 ? audio-oscillator 370.830+-12.870 366.160+-1.065 might be 1.0128x faster imaging-darkroom 278.854+-2.486 ? 279.016+-3.180 ? imaging-desaturate 121.060+-0.754 ? 121.103+-0.350 ? imaging-gaussian-blur 196.742+-16.141 186.156+-5.808 might be 1.0569x faster json-parse-financial 78.521+-1.465 78.117+-1.172 json-stringify-tinderbox 96.878+-1.198 ? 98.124+-2.207 ? might be 1.0129x slower stanford-crypto-aes 88.125+-2.671 ? 88.692+-0.933 ? stanford-crypto-ccm 82.606+-17.958 ? 84.737+-18.074 ? might be 1.0258x slower stanford-crypto-pbkdf2 230.726+-1.730 ? 231.858+-2.054 ? stanford-crypto-sha256-iterative 82.694+-1.192 82.323+-0.754 <arithmetic> * 195.130+-1.460 194.224+-1.077 might be 1.0047x faster <geometric> 161.505+-1.887 161.151+-2.464 might be 1.0022x faster <harmonic> 137.291+-2.520 ? 137.429+-3.492 ? might be 1.0010x slower Conf#1 Conf#2 JSRegress: adapt-to-double-divide 19.3823+-0.3939 19.2555+-0.8093 aliased-arguments-getbyval 1.2377+-0.0878 1.1640+-0.1028 might be 1.0633x faster allocate-big-object 3.1382+-0.2345 3.0658+-0.1090 might be 1.0236x faster arity-mismatch-inlining 1.1234+-0.1589 ! 1.7153+-0.1010 ! definitely 1.5268x slower array-access-polymorphic-structure 10.1132+-0.3152 ? 10.2735+-0.3003 ? might be 1.0158x slower array-nonarray-polymorhpic-access 60.2507+-0.5758 ? 60.3549+-0.7711 ? array-prototype-every 120.0062+-2.0865 116.9751+-1.2256 might be 1.0259x faster array-prototype-forEach 120.0565+-6.1395 116.6153+-2.1500 might be 1.0295x faster array-prototype-map 141.9522+-2.7209 140.7390+-3.3697 array-prototype-some 117.5760+-2.8921 115.9459+-1.3198 might be 1.0141x faster array-with-double-add 6.5134+-0.0329 6.5027+-0.1355 array-with-double-increment 4.6032+-0.1133 ? 4.6806+-0.3251 ? might be 1.0168x slower array-with-double-mul-add 7.4723+-0.1126 ? 7.4760+-0.1574 ? array-with-double-sum 4.8367+-0.0530 4.8276+-0.1263 array-with-int32-add-sub 11.4795+-0.1953 11.4257+-0.2075 array-with-int32-or-double-sum 4.9638+-0.0705 4.9572+-0.1424 ArrayBuffer-DataView-alloc-large-long-lived 108.9470+-0.8627 ? 109.0035+-0.5219 ? ArrayBuffer-DataView-alloc-long-lived 30.1442+-1.2520 29.9838+-1.0545 ArrayBuffer-Int32Array-byteOffset 5.3387+-0.2559 5.2867+-0.3213 ArrayBuffer-Int8Array-alloc-large-long-lived 112.6555+-0.7892 ? 112.9815+-1.4206 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 48.6693+-1.8182 47.4923+-0.0536 might be 1.0248x faster ArrayBuffer-Int8Array-alloc-long-lived 28.9188+-0.3647 ? 29.0355+-0.7111 ? ArrayBuffer-Int8Array-alloc 25.8433+-0.2106 25.4814+-0.4668 might be 1.0142x faster asmjs_bool_bug 10.4194+-0.0922 ^ 9.9984+-0.1024 ^ definitely 1.0421x faster assign-custom-setter-polymorphic 4.6334+-0.1595 ? 4.7307+-0.1954 ? might be 1.0210x slower assign-custom-setter 6.3411+-0.3211 ? 6.6371+-0.5912 ? might be 1.0467x slower basic-set 15.2784+-0.3250 14.8600+-0.4539 might be 1.0282x faster big-int-mul 6.0945+-0.1050 ! 6.5878+-0.1656 ! definitely 1.0809x slower boolean-test 4.6658+-0.1611 4.5993+-0.0821 might be 1.0145x faster branch-fold 5.0358+-0.0318 ? 5.1298+-0.1303 ? might be 1.0187x slower by-val-generic 13.9811+-0.2287 ? 14.4480+-0.6815 ? might be 1.0334x slower call-spread-apply 20.7062+-1.1787 ! 23.0069+-0.7499 ! definitely 1.1111x slower call-spread-call 8.8101+-0.2262 ! 10.3087+-0.2654 ! definitely 1.1701x slower captured-assignments 0.6540+-0.1084 0.6019+-0.1159 might be 1.0866x faster cast-int-to-double 12.3420+-0.2716 ? 12.3703+-0.3096 ? cell-argument 10.2212+-0.2965 ? 10.6597+-0.3101 ? might be 1.0429x slower cfg-simplify 4.0591+-0.1470 ? 4.0654+-0.0620 ? chain-getter-access 31.6298+-0.4345 31.4977+-0.0531 cmpeq-obj-to-obj-other 12.9720+-0.8726 12.8372+-0.2440 might be 1.0105x faster constant-test 8.5061+-0.1255 ? 8.5336+-0.1530 ? DataView-custom-properties 115.7548+-0.9234 ? 116.0894+-0.7314 ? delay-tear-off-arguments-strictmode 3.6532+-0.2058 ? 3.6577+-0.1987 ? destructuring-arguments 8.7505+-0.1566 ? 8.7685+-0.1106 ? destructuring-swap 8.6813+-0.1708 8.6613+-0.1179 direct-arguments-getbyval 1.1725+-0.1974 ? 1.2007+-0.0928 ? might be 1.0240x slower double-get-by-val-out-of-bounds 6.2817+-0.2793 ? 7.0935+-0.5770 ? might be 1.1292x slower double-pollution-getbyval 10.9280+-0.3017 ? 10.9594+-0.5057 ? double-pollution-putbyoffset 6.0344+-0.0436 ? 6.0815+-0.1072 ? double-to-int32-typed-array-no-inline 2.9221+-0.0444 ! 2.9996+-0.0137 ! definitely 1.0265x slower double-to-int32-typed-array 2.5560+-0.1584 2.5122+-0.1667 might be 1.0174x faster double-to-uint32-typed-array-no-inline 3.1728+-0.4634 3.0807+-0.0865 might be 1.0299x faster double-to-uint32-typed-array 2.6215+-0.0639 ? 2.6749+-0.1762 ? might be 1.0203x slower empty-string-plus-int 10.1248+-0.3834 10.1120+-0.5861 emscripten-cube2hash 54.2736+-2.0553 54.0609+-1.8173 external-arguments-getbyval 2.1030+-0.1480 2.0673+-0.1490 might be 1.0173x faster external-arguments-putbyval 2.9559+-0.1257 2.9467+-0.1664 fixed-typed-array-storage-var-index 1.5853+-0.0614 1.5678+-0.1016 might be 1.0111x faster fixed-typed-array-storage 1.2318+-0.1155 ? 1.2537+-0.1154 ? might be 1.0178x slower Float32Array-matrix-mult 7.7467+-0.8357 7.6463+-0.6649 might be 1.0131x faster Float32Array-to-Float64Array-set 84.9412+-1.7735 84.4825+-5.3767 Float64Array-alloc-long-lived 96.1516+-1.6012 ? 97.9599+-0.2985 ? might be 1.0188x slower Float64Array-to-Int16Array-set 111.0578+-1.3882 ^ 107.4605+-0.8315 ^ definitely 1.0335x faster fold-double-to-int 19.5593+-0.5384 19.5067+-0.4763 for-of-iterate-array-entries 9.3673+-0.2768 9.1719+-0.2327 might be 1.0213x faster for-of-iterate-array-keys 3.7280+-0.3013 3.6992+-0.2171 for-of-iterate-array-values 3.3132+-0.1696 3.3084+-0.0421 fround 23.6090+-1.1921 ? 23.9722+-1.0781 ? might be 1.0154x slower function-dot-apply 2.2555+-0.1627 ! 3.1720+-0.1455 ! definitely 1.4063x slower function-test 4.8428+-0.1145 ? 4.8855+-0.1230 ? function-with-eval 40.6710+-1.3718 ? 40.8978+-3.1424 ? get-by-id-chain-from-try-block 8.1341+-0.2648 8.0179+-0.2204 might be 1.0145x faster get-by-id-proto-or-self 24.9310+-3.7626 23.5518+-1.1237 might be 1.0586x faster get-by-id-self-or-proto 23.7039+-0.6931 ? 24.4880+-1.1776 ? might be 1.0331x slower get-by-val-out-of-bounds 6.2044+-0.0915 ! 6.7446+-0.1829 ! definitely 1.0871x slower get_callee_monomorphic 4.8813+-0.2770 ? 4.9739+-0.3232 ? might be 1.0190x slower get_callee_polymorphic 4.5435+-0.1689 ? 4.6422+-0.0845 ? might be 1.0217x slower getter 17.5087+-0.2166 17.4517+-0.3705 global-var-const-infer-fire-from-opt 1.3479+-0.1977 1.3403+-0.1451 global-var-const-infer 1.2115+-0.0864 1.1614+-0.0854 might be 1.0431x faster HashMap-put-get-iterate-keys 37.9347+-0.6169 ? 38.4453+-0.8741 ? might be 1.0135x slower HashMap-put-get-iterate 37.3751+-0.2714 ? 37.4517+-0.5478 ? HashMap-string-put-get-iterate 43.5165+-0.5064 ? 44.0725+-2.5793 ? might be 1.0128x slower imul-double-only 10.5715+-0.3007 10.0162+-0.5781 might be 1.0554x faster imul-int-only 13.6553+-0.6768 13.0123+-0.5731 might be 1.0494x faster imul-mixed 9.7104+-0.7421 ? 9.7382+-1.0968 ? in-four-cases 21.7359+-0.3586 ? 22.0422+-0.6527 ? might be 1.0141x slower in-one-case-false 12.3218+-0.1957 ? 12.3860+-0.3081 ? in-one-case-true 12.2938+-0.3299 ? 12.3043+-0.1348 ? in-two-cases 12.5948+-0.1735 ? 12.7687+-0.3027 ? might be 1.0138x slower indexed-properties-in-objects 4.3516+-0.1297 4.2625+-0.0941 might be 1.0209x faster infer-closure-const-then-mov-no-inline 4.8930+-0.1366 ? 4.9390+-0.1165 ? infer-closure-const-then-mov 28.1350+-0.8154 28.0074+-0.4876 infer-closure-const-then-put-to-scope-no-inline 18.4719+-0.3630 ! 26.4289+-0.3116 ! definitely 1.4308x slower infer-closure-const-then-put-to-scope 29.4982+-1.0813 ! 89.3005+-1.5944 ! definitely 3.0273x slower infer-closure-const-then-reenter-no-inline 85.5662+-1.0545 ! 127.3098+-0.4809 ! definitely 1.4879x slower infer-closure-const-then-reenter 31.0850+-1.8716 ! 98.4985+-24.6073 ! definitely 3.1687x slower infer-one-time-closure-ten-vars 15.7407+-0.2197 ? 16.1625+-0.5016 ? might be 1.0268x slower infer-one-time-closure-two-vars 14.8059+-0.5081 ? 15.3876+-0.5063 ? might be 1.0393x slower infer-one-time-closure 14.8836+-0.5601 ? 15.4051+-0.4167 ? might be 1.0350x slower infer-one-time-deep-closure 27.4865+-0.7895 27.4781+-0.6207 inline-arguments-access 1.6883+-0.0781 ! 2.9946+-0.0814 ! definitely 1.7738x slower inline-arguments-aliased-access 1.8993+-0.1518 ! 3.0562+-0.0818 ! definitely 1.6091x slower inline-arguments-local-escape 19.3694+-0.3772 ! 20.3154+-0.3566 ! definitely 1.0488x slower inline-get-scoped-var 7.3472+-0.2319 7.1227+-0.4824 might be 1.0315x faster inlined-put-by-id-transition 14.6092+-0.7833 14.1965+-0.1479 might be 1.0291x faster int-or-other-abs-then-get-by-val 9.7665+-1.0413 9.4841+-0.3206 might be 1.0298x faster int-or-other-abs-zero-then-get-by-val 34.7211+-1.2687 33.7867+-0.2441 might be 1.0277x faster int-or-other-add-then-get-by-val 10.9286+-0.5552 10.7180+-0.1996 might be 1.0196x faster int-or-other-add 10.7108+-0.2702 ? 10.7727+-0.1778 ? int-or-other-div-then-get-by-val 6.5704+-0.2491 ? 6.5750+-0.0827 ? int-or-other-max-then-get-by-val 8.7711+-0.1016 ^ 7.4525+-0.1130 ^ definitely 1.1769x faster int-or-other-min-then-get-by-val 7.5591+-0.1270 ? 7.5663+-0.0983 ? int-or-other-mod-then-get-by-val 6.3017+-0.1431 6.2855+-0.1877 int-or-other-mul-then-get-by-val 6.7657+-0.2217 ? 6.8494+-0.1130 ? might be 1.0124x slower int-or-other-neg-then-get-by-val 8.3448+-0.1337 8.2550+-0.1230 might be 1.0109x faster int-or-other-neg-zero-then-get-by-val 33.7281+-0.2009 ? 33.7520+-0.6384 ? int-or-other-sub-then-get-by-val 10.4709+-0.2668 ? 10.7724+-0.2315 ? might be 1.0288x slower int-or-other-sub 8.7563+-0.2447 ! 9.5318+-0.2344 ! definitely 1.0886x slower int-overflow-local 6.5071+-0.1196 ? 6.5228+-0.2053 ? Int16Array-alloc-long-lived 71.0291+-0.3624 ^ 69.9531+-0.3434 ^ definitely 1.0154x faster Int16Array-bubble-sort-with-byteLength 46.3291+-0.3777 46.0616+-0.9958 Int16Array-bubble-sort 45.8340+-1.7248 45.2162+-0.2817 might be 1.0137x faster Int16Array-load-int-mul 2.0620+-0.0766 ? 2.0980+-0.0935 ? might be 1.0175x slower Int16Array-to-Int32Array-set 83.9869+-1.5614 ? 84.9869+-1.1963 ? might be 1.0119x slower Int32Array-alloc-large 39.4028+-1.3381 38.5523+-2.0809 might be 1.0221x faster Int32Array-alloc-long-lived 78.8344+-0.5081 78.2657+-1.0937 Int32Array-alloc 4.3915+-0.0894 4.2836+-0.1381 might be 1.0252x faster Int32Array-Int8Array-view-alloc 14.0590+-0.7414 14.0288+-0.7440 int52-spill 11.3666+-0.7363 ! 12.5745+-0.2370 ! definitely 1.1063x slower Int8Array-alloc-long-lived 65.2097+-1.6101 64.6270+-0.9344 Int8Array-load-with-byteLength 5.3398+-0.1131 ? 5.3465+-0.1375 ? Int8Array-load 5.2583+-0.1037 ? 5.3652+-0.1025 ? might be 1.0203x slower integer-divide 16.2384+-0.2150 ? 16.4371+-0.4478 ? might be 1.0122x slower integer-modulo 2.8860+-0.1730 ? 2.9111+-0.0535 ? large-int-captured 10.3930+-1.1162 9.6619+-0.4606 might be 1.0757x faster large-int-neg 23.4220+-0.4590 ? 23.4911+-0.3417 ? large-int 21.4116+-0.9013 20.6468+-0.6232 might be 1.0370x faster logical-not 6.6633+-0.1766 ? 6.7620+-0.1777 ? might be 1.0148x slower lots-of-fields 13.6047+-0.1900 13.6019+-0.3541 make-indexed-storage 4.3539+-0.2230 4.2212+-0.4442 might be 1.0314x faster make-rope-cse 6.1815+-0.4589 6.1226+-0.2378 marsaglia-larger-ints 56.3451+-0.1905 ? 56.3763+-0.2843 ? marsaglia-osr-entry 30.4260+-0.9625 29.9277+-0.5548 might be 1.0167x faster method-on-number 30.0623+-1.2206 ? 30.2355+-0.8895 ? misc-strict-eq 55.8140+-0.7836 ? 56.1756+-1.1390 ? negative-zero-divide 0.4725+-0.0636 0.4645+-0.0601 might be 1.0173x faster negative-zero-modulo 0.4910+-0.1098 ? 0.5593+-0.0418 ? might be 1.1391x slower negative-zero-negate 0.5325+-0.1382 0.5151+-0.0857 might be 1.0338x faster nested-function-parsing 47.0928+-0.5043 47.0864+-0.2452 new-array-buffer-dead 4.0881+-0.1327 4.0793+-0.1021 new-array-buffer-push 10.4794+-0.1332 10.2825+-0.1708 might be 1.0192x faster new-array-dead 14.2155+-1.0692 13.5248+-0.3305 might be 1.0511x faster new-array-push 7.1294+-0.5348 6.9947+-0.3798 might be 1.0193x faster number-test 4.5419+-0.1416 4.5120+-0.0660 object-closure-call 8.4897+-0.1777 8.4897+-0.1441 object-test 4.7555+-0.1333 ? 4.8018+-0.1179 ? poly-stricteq 79.7697+-1.8223 ? 81.5659+-3.2448 ? might be 1.0225x slower polymorphic-array-call 2.3983+-0.1807 2.3513+-0.1907 might be 1.0200x faster polymorphic-get-by-id 4.6652+-0.2317 4.6365+-0.0828 polymorphic-put-by-id 85.4098+-50.4230 ? 93.7911+-59.1560 ? might be 1.0981x slower polymorphic-structure 29.4047+-0.8182 ? 29.4144+-0.6672 ? polyvariant-monomorphic-get-by-id 12.8087+-0.1850 ? 12.8325+-0.2743 ? proto-getter-access 31.5098+-0.2835 ? 31.7770+-0.4131 ? put-by-id 19.4623+-0.5660 19.4533+-0.4429 put-by-val-large-index-blank-indexing-type 10.2538+-0.3554 ? 10.4426+-0.2774 ? might be 1.0184x slower put-by-val-machine-int 3.5144+-0.0547 3.4102+-0.3020 might be 1.0306x faster rare-osr-exit-on-local 21.1505+-1.0930 20.8011+-0.1631 might be 1.0168x faster register-pressure-from-osr 30.1984+-0.7296 30.0203+-0.4136 setter 19.8678+-0.8121 19.6318+-0.1786 might be 1.0120x faster simple-activation-demo 33.8174+-0.4198 33.6327+-0.6298 simple-getter-access 49.1508+-0.2161 ! 51.5257+-1.0152 ! definitely 1.0483x slower slow-array-profile-convergence 4.4039+-0.3819 ? 4.4262+-0.1934 ? slow-convergence 4.7617+-0.1606 ? 4.9006+-0.1496 ? might be 1.0292x slower sparse-conditional 1.5641+-0.1049 ? 1.5737+-0.0673 ? splice-to-remove 74.6746+-0.6093 ? 75.2182+-1.5301 ? string-char-code-at 24.9584+-0.4459 ! 30.3880+-1.1227 ! definitely 1.2175x slower string-concat-object 2.9935+-0.4033 2.7235+-0.0316 might be 1.0991x faster string-concat-pair-object 2.6059+-0.0499 ? 2.7677+-0.1952 ? might be 1.0621x slower string-concat-pair-simple 17.4865+-0.3764 17.4315+-0.3144 string-concat-simple 17.7873+-0.4523 17.6387+-0.2793 string-cons-repeat 11.6436+-0.3814 ? 11.6874+-0.5462 ? string-cons-tower 10.6057+-0.4757 ? 10.9050+-0.5503 ? might be 1.0282x slower string-equality 42.2438+-0.5343 ? 43.5516+-0.9038 ? might be 1.0310x slower string-get-by-val-big-char 13.4163+-1.2326 13.3007+-0.6375 string-get-by-val-out-of-bounds-insane 6.4545+-0.7393 6.0129+-0.0955 might be 1.0734x faster string-get-by-val-out-of-bounds 6.9185+-0.0931 6.8848+-0.1355 string-get-by-val 5.3950+-0.0481 5.3910+-0.0920 string-hash 3.0168+-0.0589 ! 3.1777+-0.0996 ! definitely 1.0533x slower string-long-ident-equality 37.7850+-1.2317 ? 38.5128+-0.5557 ? might be 1.0193x slower string-repeat-arith 45.1643+-0.8823 ? 45.2589+-0.5554 ? string-sub 90.6378+-1.3037 89.8120+-0.5183 string-test 4.4271+-0.0965 ? 4.5472+-0.0834 ? might be 1.0271x slower string-var-equality 69.2932+-0.7696 69.2572+-1.5123 structure-hoist-over-transitions 3.7723+-0.2092 3.7150+-0.2729 might be 1.0154x faster switch-char-constant 3.5953+-0.0594 3.5768+-0.1251 switch-char 8.9301+-0.0849 ? 8.9450+-0.1050 ? switch-constant 11.2811+-0.1307 11.2540+-0.0809 switch-string-basic-big-var 25.4135+-1.5465 24.3307+-3.8757 might be 1.0445x faster switch-string-basic-big 25.1330+-6.1588 ? 28.5273+-8.7980 ? might be 1.1351x slower switch-string-basic-var 31.1096+-0.6092 30.4557+-1.6280 might be 1.0215x faster switch-string-basic 24.4887+-5.4891 ? 26.2252+-1.9563 ? might be 1.0709x slower switch-string-big-length-tower-var 28.6133+-0.5711 ? 29.0167+-0.5769 ? might be 1.0141x slower switch-string-length-tower-var 23.0243+-0.4811 22.8272+-0.8279 switch-string-length-tower 17.6232+-1.1742 17.4654+-0.4167 switch-string-short 17.2228+-0.4194 ? 17.6193+-0.3109 ? might be 1.0230x slower switch 15.4624+-0.3256 ? 15.5522+-0.2288 ? tear-off-arguments-simple 2.6891+-0.0871 2.6056+-0.1840 might be 1.0320x faster tear-off-arguments 3.8938+-0.0190 ? 3.9322+-0.0477 ? temporal-structure 14.9877+-0.4561 ! 16.8427+-0.5870 ! definitely 1.1238x slower to-int32-boolean 23.2543+-0.5554 ? 23.3248+-0.2048 ? undefined-test 4.9802+-0.7755 4.6913+-0.1375 might be 1.0616x faster unprofiled-licm 30.1825+-1.5997 30.0535+-1.1346 weird-inlining-const-prop 2.5686+-0.1604 ? 2.5983+-0.1234 ? might be 1.0115x slower <arithmetic> 22.1623+-0.1351 ! 23.0766+-0.4006 ! definitely 1.0413x slower <geometric> * 11.4755+-0.0256 ! 11.7756+-0.0769 ! definitely 1.0261x slower <harmonic> 5.5595+-0.0437 ! 5.7096+-0.0911 ! definitely 1.0270x slower Conf#1 Conf#2 AsmBench: bigfib.cpp 799.3931+-7.6966 ? 804.1427+-10.7156 ? cray.c 818.7056+-4.7348 816.1562+-5.9460 dry.c 752.0370+-72.1259 ? 769.0327+-59.8027 ? might be 1.0226x slower FloatMM.c 1057.0609+-6.6257 1054.4727+-0.6323 gcc-loops.cpp 7167.2107+-161.9924 7123.6832+-37.3784 n-body.c 1924.8619+-5.4875 ? 1925.8546+-2.6077 ? Quicksort.c 646.6255+-1.1430 642.5638+-12.0471 stepanov_container.cpp 5680.4355+-138.4362 5657.7018+-22.0248 Towers.c 472.5874+-2.3284 471.6799+-1.5571 <arithmetic> 2146.5464+-21.7027 2140.5875+-4.7127 might be 1.0028x faster <geometric> * 1323.2878+-14.6436 ? 1324.0766+-11.4450 ? might be 1.0006x slower <harmonic> 973.0885+-14.0741 ? 974.8129+-11.5385 ? might be 1.0018x slower Conf#1 Conf#2 All benchmarks: <arithmetic> 172.2293+-0.4821 ? 172.6826+-0.4129 ? might be 1.0026x slower <geometric> 19.7934+-0.0156 ! 20.1314+-0.0800 ! definitely 1.0171x slower <harmonic> 4.8054+-0.0271 ? 4.8736+-0.0576 ? might be 1.0142x slower Conf#1 Conf#2 Geomean of preferred means: <scaled-result> 78.5806+-0.2743 ? 78.8087+-0.2640 ? might be 1.0029x slower
Mark Hahnenberg
Comment 12
2014-05-06 16:56:56 PDT
Comment on
attachment 230950
[details]
the patch. r=me to fwiw
Mark Hahnenberg
Comment 13
2014-05-06 16:57:12 PDT
too* :-/
Geoffrey Garen
Comment 14
2014-05-06 17:01:54 PDT
These look like a real regression -- as if the VariableWatchpointSet is failing to infer a constant where it used to succeed: infer-closure-const-then-put-to-scope-no-inline 18.4719+-0.3630 ! 26.4289+-0.3116 ! definitely 1.4308x slower infer-closure-const-then-put-to-scope 29.4982+-1.0813 ! 89.3005+-1.5944 ! definitely 3.0273x slower infer-closure-const-then-reenter-no-inline 85.5662+-1.0545 ! 127.3098+-0.4809 ! definitely 1.4879x slower infer-closure-const-then-reenter 31.0850+-1.8716 ! 98.4985+-24.6073 ! definitely 3.1687x slower
Mark Lam
Comment 15
2014-05-07 00:57:03 PDT
(In reply to
comment #14
)
> These look like a real regression -- as if the VariableWatchpointSet is failing to infer a constant where it used to succeed: > > infer-closure-const-then-put-to-scope-no-inline 18.4719+-0.3630 ! 26.4289+-0.3116 ! definitely 1.4308x slower > infer-closure-const-then-put-to-scope 29.4982+-1.0813 ! 89.3005+-1.5944 ! definitely 3.0273x slower > infer-closure-const-then-reenter-no-inline 85.5662+-1.0545 ! 127.3098+-0.4809 ! definitely 1.4879x slower > infer-closure-const-then-reenter 31.0850+-1.8716 ! 98.4985+-24.6073 ! definitely 3.1687x slower
It’s not failing to infer constants. The regression is because we took out the optimization that checks for writing the same value. Adding a counter to track how many times the DFG slow path is called, shows that infer-closure-const-then-put-to-scope was calling the slow path like 3 million times per run of the benchmark. Presumably, the other benchmarks behaved similarly. I did a quick test change to add back that value equivalence check optimization in the DFG generated code, and with that, the regression went away. I’ll implement a more rigorous fix tomorrow and redo the tests.
Mark Lam
Comment 16
2014-05-07 13:06:19 PDT
Created
attachment 231012
[details]
patch 2: don't call the This patch has passed the jsc tests and layout tests on x86_64. It has also passed the jsc tests on 32-bit x86. Performance results are a wash in aggregate though some individual test components did seem to show some consistent differences across 3 runs of the perf test. I will upload perf results shortly after this. Note: I need to rerun this updated test against the original dromaeo crash issue in this bug to ensure that the fix is still effective.
Mark Lam
Comment 17
2014-05-07 13:07:28 PDT
Created
attachment 231013
[details]
perf-run 1
Mark Lam
Comment 18
2014-05-07 13:07:54 PDT
Created
attachment 231014
[details]
perf-run 2
Mark Lam
Comment 19
2014-05-07 13:08:15 PDT
Created
attachment 231015
[details]
perf-run 3
Mark Lam
Comment 20
2014-05-07 13:12:35 PDT
In the 3 set of perf results that I've just uploaded, the results show no significant perf difference in aggregate. However, all 3 set of results consistently show the following differences (in approximately the same amount of difference in perf results): asmjs_bool_bug 10.4389+-0.3607 ^ 9.5516+-0.2003 ^ definitely 1.0929x faster Float32Array-to-Float64Array-set 83.1491+-1.1323 ! 88.9993+-2.8888 ! definitely 1.0704x slower function-dot-apply 2.1975+-0.0733 ^ 1.8278+-0.0814 ^ definitely 1.2023x faster infer-closure-const-then-put-to-scope-no-inline 18.5222+-0.7751 ^ 16.8975+-0.3315 ^ definitely 1.0961x faster infer-closure-const-then-reenter-no-inline 85.2867+-1.0562 ^ 73.9457+-0.5822 ^ definitely 1.1534x faster int-or-other-max-then-get-by-val 8.8130+-0.0650 ^ 7.5538+-0.1662 ^ definitely 1.1667x faster int-or-other-sub-then-get-by-val 10.5041+-0.1474 ! 11.0717+-0.1680 ! definitely 1.0540x slower int-or-other-sub 8.8774+-0.1046 ! 9.4892+-0.1166 ! definitely 1.0689x slower Int16Array-alloc-long-lived 71.8928+-1.5212 ^ 69.3307+-0.3483 ^ definitely 1.0370x faster temporal-structure 15.2799+-0.5182 ! 18.5397+-0.3622 ! definitely 1.2133x slower
Geoffrey Garen
Comment 21
2014-05-07 13:19:04 PDT
Comment on
attachment 231012
[details]
patch 2: don't call the r=me
Mark Lam
Comment 22
2014-05-07 15:02:45 PDT
Thanks. I've run 10 iterations of the Dromaeo/cssquery-dojo.html test so far and have not seen a crash. Without the fix, I would normally have seen crash by now. The patch is landed in
r168443
: <
http://trac.webkit.org/r168443
>
Mark Lam
Comment 23
2014-05-08 13:43:20 PDT
FYI, I've completed 100 runs of Dromaeo/cssquery-dojo.html with no crashes.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug