Bug 239116

Summary: www/node Illegal Instruction on powerpc64 big endian elfv1
Product: Ports & Packages Reporter: Curtis Hamilton <hamiltcl>
Component: Individual Port(s)Assignee: Bradley T. Hughes <bhughes>
Status: Closed Overcome By Events    
Severity: Affects Only Me CC: gustavo.romero, jhibbits, powerpc
Priority: --- Flags: bugzilla: maintainer-feedback? (bhughes)
Version: Latest   
Hardware: powerpc   
OS: Any   

Description Curtis Hamilton 2019-07-10 17:33:42 UTC
Build completes successfully, but core dumps with "Illegal Instruction".

root@lenoil8:~ # node
Welcome to Node.js v12.2.0.
Type ".help" for more information.
Illegal instruction (core dumped)
root@lenoil8:~ # gdb node node.core
GNU gdb (GDB) 8.2.1 [GDB v8.2.1 for FreeBSD]
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "powerpc64-portbld-freebsd12.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from node...(no debugging symbols found)...done.
[New LWP 100293]
[New LWP 100338]
[New LWP 100339]
[New LWP 100340]
[New LWP 100341]
[New LWP 100342]
[New LWP 100343]
Core was generated by `node'.
Program terminated with signal SIGILL, Illegal instruction.
#0  0x0000000011505b50 in ?? ()
[Current thread is 1 (LWP 100293)]
(gdb) backtrace
#0  0x0000000011505b50 in ?? ()
#1  0x0000000011505b00 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) disass
No function contains program counter for selected frame.
Comment 1 Gustavo Romero 2019-07-10 17:39:02 UTC
(In reply to Curtis Hamilton from comment #0)

Hi Curtis,

What does "x/4i $pc" tell in gdb?

Could you also try to inspect 'dmesg' and paste the instruction inside < >, please?

Thanks.
Comment 2 Curtis Hamilton 2019-07-10 19:16:25 UTC
(In reply to Gustavo Romero from comment #1)
>>Hi Curtis,

>>What does "x/4i $pc" tell in gdb?

[Current thread is 1 (LWP 100087)]
(gdb) x/4i $pc
=> 0x11505b50:	friz    f2,f1
   0x11505b54:	fsub    f1,f1,f2
   0x11505b58:	lfd     f3,0(r28)
   0x11505b5c:	fcmpu   cr0,f1,f3
(gdb) 


>>Could you also try to inspect 'dmesg' and paste the instruction inside < >, >>please?

I assumed you meant this.

cpu0: IBM PowerPC 970MP revision 1.1, 2300.29 MHz
cpu0: Features dc000000<PPC32,PPC64,ALTIVEC,FPU,MMU>
cpu0: HID0 1511081<DEEPNAP,NAP,DPM,NHR,TBEN,ENATTN>

>>Thanks.
Comment 3 Justin Hibbits freebsd_committer 2019-07-10 19:43:14 UTC
It looks like the 'friz' instruction came in with PowerISA 2.03 or 2.04.  PPC970 conforms to 2.02 and/or the legacy PowerPC ISA, so does not have the 'friz' instruction.
Comment 4 Curtis Hamilton 2019-09-27 20:29:08 UTC
Seems the only fix is new hardware.  Therefore this is OBE.