Hi JS hackers,

I have a patch queue (unrelated to JS) that causes an (expected) assertion to trigger in a mochitest, and when nsStackWalker is invoked to print out a stack trace, it ends up crashing due to finding a bad value on the stack. The second last valid frame printed is js::jit::InvokeFunction, and the last valid frame printed is what I assume to be in JIT code. The crashing frame pointer is 0xffffff88 (which I'm told is a magic number the JS engine uses).

I don't know if my patches are causing the problem or not (I'm hoping not), so I have a couple of questions.

1. In a debug build, should JIT code always be stack walkable?

2. Is there an easy way one of you would be able to tell whether this is a bug in the JITted code, or I can rule it out so I can look harder at my patches or existing code? What information can I give to help?

The crash is easily reproducible; you can see it on try here https://treeherder.mozilla.org/ui/#/jobs?repo=try&revision=b02537901def and I have an rr recording of it locally.

If I explicitly check for 0xffffff88 and abort the stack walking when I find it, then the mochitest completes without a problem; so what the stack walker is interpreting as a frame pointer must not actually be used as a frame pointer in the end.

Grateful for any hints on how to proceed.

Thanks,

Cameron
_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to