lenticularis39 / axpbox

AXPbox Alpha emulator
GNU General Public License v2.0
165 stars 16 forks source link

Unbounded recursion exhausting host stack. #112

Open dancrossnyc opened 2 weeks ago

dancrossnyc commented 2 weeks ago

I'm trying to run axpbox on FreeBSD on an i9 machine, but am running into a problem with infinite recursion that eventually exhausts the (host) stack and causes a SIGSEGV. Running under lldb, I can see something like the following:

ide0.0 aborting on command 0xec
Error sending the packet: send: Network is down
*** IP interrupt set for CPU 0 from CPU 0(@ 110d5)
Process 48465 stopped
* thread #2, name = 'axpbox', stop reason = signal SIGSEGV: invalid permissions for mapped object (fault address: 0x8290f0ff8)
    frame #0: 0x0000000000278348 axpbox`CAlphaCPU::FindTBEntry(unsigned long, int) + 8
axpbox`CAlphaCPU::FindTBEntry:
->  0x278348 <+8>:  movq   %rsi, -0x18(%rbp)
    0x27834c <+12>: movl   %edx, -0x1c(%rbp)
    0x27834f <+15>: movq   -0x10(%rbp), %rax
    0x278353 <+19>: movq   %rax, -0x38(%rbp)
(lldb) where
error: 'where' is not a valid command.
(lldb) bt
* thread #2, name = 'axpbox', stop reason = signal SIGSEGV: invalid permissions for mapped object (fault address: 0x8290f0ff8)
  * frame #0: 0x0000000000278348 axpbox`CAlphaCPU::FindTBEntry(unsigned long, int) + 8
    frame #1: 0x00000000002774f9 axpbox`CAlphaCPU::virt2phys(unsigned long, unsigned long*, int, bool*, unsigned int) + 569
    frame #2: 0x000000000027dafb axpbox`CAlphaCPU::vmspal_int_initiate_exception() + 283
    frame #3: 0x0000000000281b1b axpbox`CAlphaCPU::vmspal_ent_dtbm_single(int) + 2123
    frame #4: 0x0000000000277918 axpbox`CAlphaCPU::virt2phys(unsigned long, unsigned long*, int, bool*, unsigned int) + 1624
    frame #5: 0x000000000027dafb axpbox`CAlphaCPU::vmspal_int_initiate_exception() + 283
    frame #6: 0x0000000000281b1b axpbox`CAlphaCPU::vmspal_ent_dtbm_single(int) + 2123
    frame #7: 0x0000000000277918 axpbox`CAlphaCPU::virt2phys(unsigned long, unsigned long*, int, bool*, unsigned int) + 1624
    frame #8: 0x000000000027dafb axpbox`CAlphaCPU::vmspal_int_initiate_exception() + 283
    frame #9: 0x0000000000281b1b axpbox`CAlphaCPU::vmspal_ent_dtbm_single(int) + 2123
    frame #10: 0x0000000000277918 axpbox`CAlphaCPU::virt2phys(unsigned long, unsigned long*, int, bool*, unsigned int) + 1624
    frame #11: 0x000000000027dafb axpbox`CAlphaCPU::vmspal_int_initiate_exception() + 283
    frame #12: 0x0000000000281b1b axpbox`CAlphaCPU::vmspal_ent_dtbm_single(int) + 2123
    frame #13: 0x0000000000277918 axpbox`CAlphaCPU::virt2phys(unsigned long, unsigned long*, int, bool*, unsigned int) + 1624
    frame #14: 0x000000000027dafb axpbox`CAlphaCPU::vmspal_int_initiate_exception() + 283
    frame #15: 0x0000000000281b1b axpbox`CAlphaCPU::vmspal_ent_dtbm_single(int) + 2123
    frame #16: 0x0000000000277918 axpbox`CAlphaCPU::virt2phys(unsigned long, unsigned long*, int, bool*, unsigned int) + 1624
    frame #17: 0x000000000027dafb axpbox`CAlphaCPU::vmspal_int_initiate_exception() + 283
    frame #18: 0x0000000000281b1b axpbox`CAlphaCPU::vmspal_ent_dtbm_single(int) + 2123
    frame #19: 0x0000000000277918 axpbox`CAlphaCPU::virt2phys(unsigned long, unsigned long*, int, bool*, unsigned int) + 1624

I'm afraid I haven't had any time further to look into what may be going on, however.

dancrossnyc commented 2 weeks ago

I should mention; this crash occurs when attempting to boot HPE VMS 8.4. Booting VSI VMS 8.4-2L1, this does not happen, though VMS itself crashes with an exception, when trying to use a wide SCSI disk.

**** OpenVMS Alpha Operating System V8.4-2L1 - BUGCHECK ****

** Bugcheck code = 000001CC: INVEXCEPTN, Exception while above ASTDEL
** Crash CPU: 00000000    Primary CPU: 00000000
** Highest CPU number:    00000003
** Active CPUs:           00000000.00000001
** Current Process:       STARTUP
** Current PSB ID:        00000001
** Image Name:            DQA0:[SYS0.SYSCOMMON.][SYSEXE]SYSMAN.EXE;1

**** Canceled error log buffer dump, no dump file available

**** No supported device(s) found in DUMP_DEV
**** No DUMP_DEV devices found
**** Attempting to write the crash dump to the system disk

**** Canceled memory dump, no dump file available

**** Displaying expanded crash summary instead...

** Bugcheck code = 000001CC: INVEXCEPTN, Exception while above ASTDEL
** Crash CPU: 00000000    Primary CPU: 00000000
** Highest CPU number:    00000003
** Active CPUs:           00000000.00000001
** Available CPUs:        00000000.00000001
** Current Process:       STARTUP
** Current PSB ID:        00000001
** Register Dump:
  R0  = 00000000.00000000  R1  = 00000000.0000000C  R2  = 00000000.7FF87BD0
  R3  = FFFFFFFF.808D2260  R4  = 00000000.7FF87A40  R5  = 00000000.7FF87BB8
  R6  = 00000000.7FF87C00  R7  = 10000000.00000804  R8  = FFFFFFFF.809D6FD0
  R9  = FFFFFFFF.809D7008  R10 = 00000000.00000000  R11 = FFFFFFFF.FFFFF004
  R12 = 00000000.0090A6B0  R13 = FFFFFFFF.80857930  R14 = 00000000.00000000
  R15 = FFFFFFFF.80808000  R16 = 00000000.000001CC  R17 = 00000000.7FF87A40
  R18 = 00000000.7FF87C00  R19 = FFFFFFFF.FFFFFE04  R20 = 00000000.7FF87C58
  R21 = 00000000.00000005  R22 = 00000000.00000006  R23 = 00000000.00000000
  R24 = 00000000.0000000C  R25 = FFFFFFFF.FFFFFF04  R26 = FFFFFFFF.804D9858
  R27 = FFFFFFFF.8083FA88  R28 = FFFFFFFF.80018FB0  R29 = 00000000.7FF87C50
  PC  = FFFFFFFF.800B9D28  PS  = 18000000.00000804  F0  = 08000000.00000000
  F1  = 00000000.00000000  F2  = 00000000.00000000  F3  = 00000000.00000000
  F4  = 00000000.00000000  F5  = 00000000.00000000  F6  = 00000000.00000000
  F7  = 00000000.00000000  F8  = 00000000.00000000  F9  = 00000000.00000000
  F10 = 00000000.00000000  F11 = 00000000.00000000  F12 = 00000000.00000000
  F13 = 00000000.00000000  F14 = 00000000.00000000  F15 = 00000000.00000000
  F16 = 00000000.00000000  F17 = 00000000.00000000  F18 = 00000000.00000000
  F19 = 00000000.00000000  F20 = 00000000.00000000  F21 = 00000000.00000000
  F22 = 00000000.00000000  F23 = 00000000.00000000  F24 = 00000000.00000000
  F25 = 00000000.00000000  F26 = 00000000.00000000  F27 = 00000000.00000000
  F28 = 00000000.00000000  F29 = 00000000.00000000  F30 = 00000000.00000000
  FPCR = 00000000.00000008

** Kernel/Exec/Swapper/System Stack = 7FF879D8
  7FF879D8:  00000000.7FF87BB8
  7FF879E0:  FFFFFFFF.80844A08
  7FF879E8:  00000000.000001D8
  7FF879F0:  00000000.00000060
  7FF879F8:  00000000.00000220
  7FF87A00:  00000000.00000006
  7FF87A08:  00000000.00000000
  7FF87A10:  00000000.00000040
  7FF87A18:  FFFFFFFF.8001EAD4
  7FF87A20:  FFFFFFFF.808405D8
  7FF87A28:  FFFFFFFF.80C5ABC0
  7FF87A30:  FFFFFFFF.00000260
  7FF87A38:  FFFFFFFF.00000001
  7FF87A40:  00000000.0000002C
  7FF87A48:  00000000.7FF87C50
  7FF87A50:  FFFFFFFF.FFFFFFFD