Menu

#558 Segfault when starting Novell Netware 5.1 installer

0.74
open
nobody
None
1
2022-11-26
2022-11-26
No

Dosbox 0.74-3 on Debian testing amd64.
I've compiled dosbox with -ggdb3.
My assumption is that netware tries to do something that dosbox isn't supporting (maybe cannot support). If that is the case, a proper error message should be emitted instead of segfaulting.
Let me know if I can assist in analyzing this.

13:46 blackbit@void pts/6 ~/src/debian/dosbox/dosbox $ gdb ./src/dosbox 
GNU gdb (Debian 12.1-4) 12.1
Copyright (C) 2022 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 "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://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 ./src/dosbox...
(gdb) r
Starting program: /home/blackbit/src/debian/dosbox/dosbox/src/dosbox 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
DOSBox version 0.74-3
Copyright 2002-2019 DOSBox Team, published under GNU GPL.
---
[New Thread 0x7ffff22bc6c0 (LWP 1089267)]
[Thread 0x7ffff22bc6c0 (LWP 1089267) exited]
CONFIG:Loading primary settings from config file /home/blackbit/.dosbox/dosbox-0.74-3.conf
[New Thread 0x7ffff22bc6c0 (LWP 1089270)]
MIXER:Got different values from SDL: freq 44100, blocksize 512
ALSA:Can't subscribe to MIDI port (65:0) nor (17:0)
MIDI:Opened device:none
DOSBox switched to max cycles, because of the setting: cycles=auto. If the game runs too fast try a fixed cycles amount in DOSBox's options.

Thread 1 "dosbox" received signal SIGSEGV, Segmentation fault.
0x0000555555584872 in CPU_Interrupt (num=num@entry=14, type=type@entry=6, oldeip=94239) at cpu.cpp:546
546 void CPU_Interrupt(Bitu num,Bitu type,Bitu oldeip) {
(gdb) bt f
#0  0x0000555555584872 in CPU_Interrupt (num=num@entry=14, type=type@entry=6, oldeip=94239) at cpu.cpp:546
        __PRETTY_FUNCTION__ = <optimized out>
#1  0x0000555555585421 in CPU_Exception (which=which@entry=14, error=<optimized out>) at cpu.cpp:542
No locals.
#2  0x00005555555947aa in PAGING_PageFault (lin_addr=lin_addr@entry=311292, page_addr=page_addr@entry=2699564, faultcode=<optimized out>) at paging.cpp:158
        old_lflags = {var1 = {dword = {16253029}, word = {101, 248}, byte = "e", <incomplete sequence \370>}, var2 = {dword = {16773120}, word = {61440, 255}, 
            byte = "\000\360\377"}, res = {dword = {4294447205}, word = {4197, 65528}, byte = "e\020\370\377"}, type = 0, prev_type = 0, oldcf = 0}
        old_cpudecoder = 0x555555594640 <PageFaultCore()>
        entry = <optimized out>
#3  0x00005555555951e4 in InitPageCheckPresence (entry=<synthetic pointer>..., table=<synthetic pointer>..., writing=true, lin_addr=311292) at paging.cpp:199
        d_index = 0
        t_index = 75
        table_addr = <optimized out>
        entry_addr = 2699564
        lin_page = 75
        lin_page = <optimized out>
        d_index = <optimized out>
        t_index = <optimized out>
        table_addr = <optimized out>
        entry_addr = <optimized out>
#4  InitPageHandler::InitPage (lin_addr=lin_addr@entry=311292, writing=writing@entry=true, this=<optimized out>) at paging.cpp:326
        table = <optimized out>
        entry = <optimized out>
        priv_check = <optimized out>
        lin_page = 75
        phys_page = <optimized out>
#5  0x0000555555596cb6 in InitPageHandler::writed (this=<optimized out>, addr=311292, val=274567) at paging.cpp:280
        needs_reset = <optimized out>
#6  0x0000555555584ae8 in CPU_Push32 (value=<optimized out>) at ../../include/regs.h:97
        new_esp = 311292
        new_esp = <optimized out>
#7  CPU_Interrupt (num=num@entry=14, type=type@entry=6, oldeip=<optimized out>) at cpu.cpp:712
        cs_desc = {saved = {seg = {limit_0_15 = 65534, base_0_15 = 0, base_16_23 = 0, type = 26, dpl = 0, p = 1, limit_16_19 = 15, avl = 0, r = 0, big = 1, g = 1, 
              base_24_31 = 0}, gate = {offset_0_15 = 65534, selector = 0, paramcount = 0, reserved = 0, type = 26, dpl = 0, p = 1, offset_16_31 = 207}, fill = {65534, 
              13605376}}}
        gate_sel = <optimized out>
        gate_off = 94239
        cs_dpl = <optimized out>
        gate = <optimized out>
        __PRETTY_FUNCTION__ = <optimized out>
#8  0x0000555555585421 in CPU_Exception (which=which@entry=14, error=<optimized out>) at cpu.cpp:542
No locals.
#9  0x00005555555947aa in PAGING_PageFault (lin_addr=lin_addr@entry=311292, page_addr=page_addr@entry=2699564, faultcode=<optimized out>) at paging.cpp:158
        old_lflags = {var1 = {dword = {16253029}, word = {101, 248}, byte = "e", <incomplete sequence \370>}, var2 = {dword = {16773120}, word = {61440, 255}, 
            byte = "\000\360\377"}, res = {dword = {4294447205}, word = {4197, 65528}, byte = "e\020\370\377"}, type = 0, prev_type = 0, oldcf = 0}
        old_cpudecoder = 0x555555594640 <PageFaultCore()>
        entry = <optimized out>
#10 0x00005555555951e4 in InitPageCheckPresence (entry=<synthetic pointer>..., table=<synthetic pointer>..., writing=true, lin_addr=311292) at paging.cpp:199
        d_index = 0
        t_index = 75
        table_addr = <optimized out>
        entry_addr = 2699564
        lin_page = 75
        lin_page = <optimized out>
        d_index = <optimized out>
        t_index = <optimized out>
        table_addr = <optimized out>
        entry_addr = <optimized out>
#11 InitPageHandler::InitPage (lin_addr=lin_addr@entry=311292, writing=writing@entry=true, this=<optimized out>) at paging.cpp:326
        table = <optimized out>
        entry = <optimized out>
        priv_check = <optimized out>
        lin_page = 75
        phys_page = <optimized out>
#12 0x0000555555596cb6 in InitPageHandler::writed (this=<optimized out>, addr=311292, val=274567) at paging.cpp:280
        needs_reset = <optimized out>
#13 0x0000555555584ae8 in CPU_Push32 (value=<optimized out>) at ../../include/regs.h:97
        new_esp = 311292
        new_esp = <optimized out>
#14 CPU_Interrupt (num=num@entry=14, type=type@entry=6, oldeip=<optimized out>) at cpu.cpp:712
        cs_desc = {saved = {seg = {limit_0_15 = 65534, base_0_15 = 0, base_16_23 = 0, type = 26, dpl = 0, p = 1, limit_16_19 = 15, avl = 0, r = 0, big = 1, g = 1, 
              base_24_31 = 0}, gate = {offset_0_15 = 65534, selector = 0, paramcount = 0, reserved = 0, type = 26, dpl = 0, p = 1, offset_16_31 = 207}, fill = {65534, 
              13605376}}}
        gate_sel = <optimized out>
        gate_off = 94239
        cs_dpl = <optimized out>
        gate = <optimized out>
        __PRETTY_FUNCTION__ = <optimized out>
#15 0x0000555555585421 in CPU_Exception (which=which@entry=14, error=<optimized out>) at cpu.cpp:542
No locals.
--Type <RET> for more, q to quit, c to continue without paging--

Discussion


Log in to post a comment.