-
Notifications
You must be signed in to change notification settings - Fork 29.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
crash on mipsel64 from v12.x #31118
Comments
That "Embedded blob checksum verification failed" error is a debug check, it's not enabled in release builds, so I'm kind of surprised you're getting that message. Where did you obtain the source code from? |
When nodejs crashed, I build nodejs with |
You mention release builds crash? What does the backtrace look like in gdb? |
So I just dig the issue deeper. It crashed at node_mksnapshot.
With no backtrace frame. Disassembly at that point seems strange. It should be padding or something, not code.
So I tried to trace RA register, and got the real call routine.
Looks like it jumped into wrong address. Any further hint on debugging is appreciated. Thanks. |
It appears to be a GCC only regression.
Will do some investigation. |
#31118 (comment) looks like a C++ -> JS function call gone wrong but I can't really tell more from the backtrace. It looks like this function call: Lines 462 to 471 in db125c5
cc @joyeecheung - that code seems to have undergone quite some changes recently so perhaps this is a known and already fixed issue? @FlyGoat You might want to try out the HEAD of the v12.x-staging branch, see if that works better. |
@bnoordhuis still happens on v12.x-staging with GCC. |
Not that I know of, but I can't tell from the stack trace which part of the snapshot building was particularly relevant - I believe the call on the stack frames was just the first time V8 in our builds would ever try to call from C++ to JS through the API? It might help to just create a regular v8 context, compile a simple JS function and call into it in node/tools/snapshot/snapshot_builder.cc Line 71 in 24a4f76
See this test on how to do this: node/deps/v8/test/cctest/test-compiler.cc Line 418 in 6ca81ad
|
And, you can also try building with the configure option |
Thanks for your suggestions, node binary without snapshot crashed at the same point. |
Bisected down to commit f579e11, v8 broke between 7.3.492.25 and 7.4.288.13. Need to investigate deeper. |
on mips platform, we always build v8 use llvm before, so we do not notice this issue. |
This should be a bug of GCC assembler on mips. looks like gcc assembler do not handle this situation successfully, but clang can handle successfully, I have report this to our compiler team. do not insert source information to this file can workaround for this issue temporary, patch is attached. |
It's very nice of you to finish the investigation! We'll see how to best fix things upstream. |
Filled an v8 upstream issue As it's currently restricted to Googlers, I'll paste content below.
|
@bnoordhuis @xen0n and I can provide help with general MIPS issues, @xwafish is maintaining MIPS v8 upstream, and @wzssyqa from Debian can help with toolchain & system environment issues. We can also provide mips64el Cl machine hosted in China. Thanks. |
@FlyGoat If that machine can be set up in a way where it's managed by our Build WG in order that they can run Jenkins etc. on it, then promoting mips64el to experimental shouldn't be a problem. Tier 2 status means test failures block releases but the MIPS user base isn't large enough to warrant that. |
@bnoordhuis Who should I get in touch for that? |
@FlyGoat Can you open an issue over at https://github.com/nodejs/build/issues explaining you want to donate a machine, what specs it has, etc.? The build people will take it from there. (Technically, I'm one of the build people but I'm no expert on how to provision machines.) |
Fixed in upstream. |
@FlyGoat You can open a back-port of the bug fix if you want. The process is outlined in https://github.com/nodejs/node/blob/master/doc/guides/maintaining-V8.md, specifically the "Backporting to Abandoned Branches" section. |
The v8 patch is working on v12.x. Thank you all. @FlyGoat should open a back-port of the bug. |
about that ssl test failure: the tests are supposed to be run using openssl.cnf distributed with nodejs, |
I just build nodejs@12.14.0 on mips64el (loongson 3A3000) with --with-snapshot ,the result was successed. When I run nodejs, it crashed. The messages are as follows:
But nodejs@v10.x and nodejs@v11.x works fine. I found that when I build nodejs@v12.x with
--without-snapshot
,then nodejs works fine. Maybe mips64el has some problems with v8 snapshot.The versions of v8 and nodejs are :
According to the nodejs building document, have to build nodejs with gcc>=6.3,but I build it with gcc 4.9.3-3 without errors. after crash,I use gcc@7.3.0 to build nodejs,the result are same.
I also tried to build nodejs with crossing compiler gcc@4.9.4 and gcc@7.3.1, nodejs was crashed too.You can download them from
http://www.loongnix.org/index.php/Cross-compile , and direct download url gcc@4.9.4 and gcc@7.3.1 ,put the date directory to
/usr/loca/
the crossing build script as follows(host: ubuntu 18.04 x86_64 and gcc@7.4.0):
Maybe nodejs crashed in v8 builtin code,But when I use
./configure xxxx and --gdb
, build failed onsrc\deps\v8\src\diagnostics\gdb-jit.cc@629
#error Unsupported target architecture.Hi @bnoordhuis:
Thank you for help. Yes, mips(el) is not an officially supported
architecture, but less than nothing.
The text was updated successfully, but these errors were encountered: