Spidermonkey regression causes treehydra trunk to fail 6 tests

NEW
Assigned to

Status

()

Core
JavaScript Engine
8 years ago
7 years ago

People

(Reporter: humph, Assigned: dvander)

Tracking

Trunk
All
Linux
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Reporter)

Description

8 years ago
Today I'm trying to get callgraph stuff hooked into dxr, and I'm unable to get a working treehydra.  I've updated tried updating just dehydra, then I updated gcc w/plugins using the new stuff in the patch queue, and it doesn't matter.  Running make check_treehydra fails like this:

Test Failure: 
    Test command: /var/www/html/dxr/tools/gcc-dehydra/installed/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/cc1plus -quiet -fplugin=../gcc_treehydra.so -o /dev/null -fplugin-arg=test_locks_bad3.js locks_bad3.cc
    Failure msg: Expected 'locks_bad3.cc:10: error: precondition not met' in error output; not found. stderr:../libs/treehydra.js:12: JS Exception: No case_val in this lazy object
:0:     #0: Error("No case_val in this lazy object")
../libs/treehydra.js:12:        #1: unhandledLazyProperty("case_val")
../libs/unstable/esp.js:481:    #2: ()
./esp_lock.js:41:       #3: process_tree([object GCCNode])

Test Failure: 
    Test command: /var/www/html/dxr/tools/gcc-dehydra/installed/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/cc1plus -quiet -fplugin=../gcc_treehydra.so -o /dev/null -fplugin-arg=test_locks_good.js locks_good.cc
    Failure msg: Expected no error output, got error output :../libs/treehydra.js:12: JS Exception: No case_val in this lazy object
:0:     #0: Error("No case_val in this lazy object")
../libs/treehydra.js:12:        #1: unhandledLazyProperty("case_val")
../libs/unstable/esp.js:481:    #2: ()
./esp_lock.js:41:       #3: process_tree([object GCCNode])

Test Failure: 
    Test command: /var/www/html/dxr/tools/gcc-dehydra/installed/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/cc1plus -quiet -fplugin=../gcc_treehydra.so -o /dev/null -fplugin-arg=test_locks_good2.js locks_good2.cc
    Failure msg: Expected no error output, got error output :../libs/treehydra.js:12: JS Exception: No case_val in this lazy object
:0:     #0: Error("No case_val in this lazy object")
../libs/treehydra.js:12:        #1: unhandledLazyProperty("case_val")
../libs/unstable/esp.js:481:    #2: ()
./esp_lock.js:41:       #3: process_tree([object GCCNode])

Test Failure: 
    Test command: /var/www/html/dxr/tools/gcc-dehydra/installed/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/cc1plus -quiet -fplugin=../gcc_treehydra.so -o /dev/null -fplugin-arg=test_locks_bad4.js locks_bad4.cc
    Failure msg: Expected 'locks_bad4.cc:13: error: precondition not met' in error output; not found. stderr:../libs/treehydra.js:12: JS Exception: No case_val in this lazy object
:0:     #0: Error("No case_val in this lazy object")
../libs/treehydra.js:12:        #1: unhandledLazyProperty("case_val")
../libs/unstable/esp.js:481:    #2: ()
./esp_lock.js:41:       #3: process_tree([object GCCNode])

Test Failure: 
    Test command: /var/www/html/dxr/tools/gcc-dehydra/installed/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/cc1plus -quiet -fplugin=../gcc_treehydra.so -o /dev/null -fplugin-arg=test_locks_bad2.js locks_bad2.cc
    Failure msg: Expected 'locks_bad2.cc:12: error: precondition not met' in error output; not found. stderr:../libs/treehydra.js:12: JS Exception: No case_val in this lazy object
:0:     #0: Error("No case_val in this lazy object")
../libs/treehydra.js:12:        #1: unhandledLazyProperty("case_val")
../libs/unstable/esp.js:481:    #2: ()
./esp_lock.js:41:       #3: process_tree([object GCCNode])

Test Failure: 
    Test command: /var/www/html/dxr/tools/gcc-dehydra/installed/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.3.0/cc1plus -quiet -fplugin=../gcc_treehydra.so -o /dev/null -fplugin-arg=test_locks_bad1.js locks_bad1.cc
    Failure msg: Expected 'locks_bad1.cc:11: error: precondition not met' in error output; not found. stderr:../libs/treehydra.js:12: JS Exception: No case_val in this lazy object
:0:     #0: Error("No case_val in this lazy object")
../libs/treehydra.js:12:        #1: unhandledLazyProperty("case_val")
../libs/unstable/esp.js:481:    #2: ()
./esp_lock.js:41:       #3: process_tree([object GCCNode])


Unit Test Suite Summary:
     32 passed
      6 failed
      0 error(s)
make[1]: *** [check_treehydra] Error 1
make[1]: Leaving directory `/var/www/html/dxr/tools/gcc-dehydra/dehydra/test'
make: *** [check] Error 2
(Reporter)

Comment 1

8 years ago
Rebuilt *everything* and no difference.  I'm on a 64-bit Fedora box, if that matters.
(Reporter)

Comment 2

8 years ago
Regression window is between:

http://hg.mozilla.org/mozilla-central/rev/89e665eb9944 (passes all tests)
http://hg.mozilla.org/mozilla-central/rev/d04601f54db5 (6 tests fail)

Changesets in between these don't build.

Updated

8 years ago
Assignee: tglek → nobody
Looks like tracing recursion broke it.
Assignee: nobody → dvander
Taras, any idea at all what circumstances lead to these failures? A minimal jsapi-test makes this kind of thing much easier to fix.

Comment 5

8 years ago
(In reply to comment #4)
> Taras, any idea at all what circumstances lead to these failures? A minimal
> jsapi-test makes this kind of thing much easier to fix.

The bugs haven't been related so far. I think they are caused by the the fact that we have a very large amount of js code and we embed spidermonkey slightly differently from firefox.

Comment 6

8 years ago
Disregard comment 5, I thought I was replying to bug 527744.

This testcase would be pretty hard to reduce as it involves a native resolve func code and a pile of js code. At least one spidermonkey dev is very familiar with Dehydra code in question so it shouldn't be too much of a stumbling block to debug this in dehydra.
Assignee: dvander → general
Component: Rewriting and Analysis → JavaScript Engine
QA Contact: rewriting-and-analysis → general
Summary: treehydra trunk fails 6 tests → Spidermonkey regression causes treehydra trunk to fail 6 tests
Yeah, a JSAPI test can provide a native resolve func and you can copy the JS code in place.  I'm sure that some of the JS developers are familiar with dehydra, but not the one to whom the bug was assigned, so you can help them help you by reducing (or even telling how to reproduce with dehydra, starting from "I have never tried to use dehydra before", as a start).

Comment 8

8 years ago
To reproduce this, follow Dehydra installation instructions on https://developer.mozilla.org/En/Dehydra/Installing_Dehydra

After compiling dehydra, run make check_treehydra to see the failures. This will output the exact command that is failing so one can run it through gdb. I'm happy to help with any questions in #static

If setting up dehydra build env is too troublesome, we arrange ssh access to a mozilla machine with everything setup & ready to fail(but that is likely more time consuming).

As I said before, a testcase would be difficult to produce(ie weeks) without a better understanding of spidermonkey internals that are failing. It doesn't fail on every native resolve call, seems to require a certain codepath.

Comment 9

7 years ago
As of my last comment, using 1.9.2 spidermonkey was a reasonable workaround while the trunk fixed. 

Now the bug is also in 1.9.2 spidermonkey and is likely to get released, meaning that Treehydra will not function with neither the mozilla's bleeding edge spidermonkeys, nor distribution ones.
Blocks: 437502
Hardware: x86_64 → All

Comment 10

7 years ago
(In reply to comment #9)
> As of my last comment, using 1.9.2 spidermonkey was a reasonable workaround
> while the trunk fixed. 

Correction, I got my build trees swapped, trunk is still broken and 192 is ok.
(Assignee)

Updated

7 years ago
Assignee: general → dvander
Duplicate of this bug: 541554

Comment 12

7 years ago
Created attachment 423169 [details] [diff] [review]
Added check to see if property is defined. This results in a succesful build

Updated

7 years ago
Blocks: 569973
You need to log in before you can comment on or make changes to this bug.