I just was trying install some DOS accounting program. I want run it from Linux console, locally or remote (previous versions I was run from xterm). And I find some weird behavior:
- from console or from xterm with "-t" switch I can run DOSEMU and its FreeDOS programs, and it seems run fine
- but when I start this program installer, then almost immediately after start (before program display anything) dosemu crashes with "ERROR: general protection at 0x70200: 0"
message
- however I can without problem install this program with DOSEMU running from xterm
- And when I start this program self from console or 'dosemu -t' from X, then program start, display some its screen and then freeze - it burdens CPU at 99.9%, is unresponsive at any keyboard input (ESC, CTRL/C etc.) and dosemu must be killed.
- I can without problems run this program with DOSEMU running from xterm
Some details about:
- I run DOSEMU at Fedora 17 i686 32-bit Linux, SELinux disabled, mmap_min_addr = 0
- both program and its installer seems are written in Borland TP (maybe not same version)
- I was trying dosemu version 1.4.0.6-14.20120623git.fc17.i686 from Fedora rpmfusion repository (maintained by Justin Zygmont) and these my self-compiled versions from git repo:
1.4.0.6-git85.g9bd03b5.1.fc17.i686
1.4.0.7-git107.g3633a28.1.fc14.i686
1.4.0.7-git108.ge889ccb.1.fc17.i686
1.4.0.7-git17.g0d3e464.1.fc17.i686
1.4.0.7-git68.g8123281.1.fc17.i686
1.4.0.7-git97.g36b90a8.1.fc16.i686
1.4.0.8-git112.g760339c.2.fc17.i686
1.4.0.8-git8.gb028d3f.2.fc17.i686
All these versions behave identicaly, installer crashed always with "general protection at 0x70200: 0"
- In attachment are boot.log files for these crashes
- please tell me when I can do something more or supply aditional info
Can you attach your program?
Hello Stas, I now find that my installer (which crashes dosemu) not need this 30 MB file (which contain packed files for installation). Thus I can attach only own program, which is only ~130 kB. I attach it as bzip2 archive, for its size further reduction. Thanks for Your help.
Stas, when You confirm to attach it here I will did it, but this program
is 30MB big and thus maybe Your direct download will be better. It is at URL:
http://www.ucto2000.cz/DOWNLOAD/u13_cd.zip
Unzipping it You get four files:
-rw-r--r--. 1 root hanzlici 3083 Jan 8 10:27 CTIME.TXT
-rw-r--r--. 1 root hanzlici 30314007 Jan 9 12:00 INSTAL1.PAK
-rw-r--r--. 1 root hanzlici 131072 Nov 30 2000 INSTAL.EXE
-rw-r--r--. 1 root hanzlici 1001 Dec 6 2000 INSTALL.MSG
and INSTAL.EXE is program installer. At start it display semigraphic
screen for destination directory selection (implicitly C:\ucto2013),
You may confirm it. After expanding files in, it offers to increase
config.sys "FILES=" to 150 - You may dismiss it. And it's all.
Own program start with "C:\ucto2013\u.bat".
Program not write anything out of its directory, it's safe run it.
Download is public and quite legal, as it work in three modes -
1)full with proper license, 2)as demoversion and 3)as viewer only
for this accounting SW - and last two modes are quite free.
Thanks Franta
PS: In meantime I compile and tried also DOSEMU 1.4.0-svn1998,
-svn2053 and -svn2058, all behaves quite identically as these
newer, installer crashed with "general protection at 0x70200: 0"
error.
PS2: I'm not this program author, only user; and authors support
it only on Windows OSs
Stas Sergeev wrote:
--
S pozdravem
František Hanzlík
Luční 502 Linux/Unix/LAN/Internet Tel: +420-377946353
33209 Štěnovice e-mail:franta@hanzlici.cz Fax: +420-377946353
Czech Republic http://hanzlici.cz/ GSM: +420-604117319
Tento mail neobsahuje viry, byl odeslán z operačního systému Linux
Related
Bugs: #472
When I compared '+9a' debug boot.log logs from OK run (under xterm) and crashed run (under Linux console or 'dosemu -t'), then there is maybe important difference in crash moment:
Although DO_VM86 values seems same, RET_VM86 return values aren't.
I tried clarify and perceive this, but it seems my skills are quite insufficient for solving this.
Can You give me any help/direction?
I just tried this same on new git downloaded dosemu-1.4.0.8-git116.g6f398fd with same result. Tail of boot.log is:
ERROR: general protection at 0x70200: 0
Program=do_vm86.c, Line=294
EIP: 7020:00010000 ESP: 292b:00003f80 VFLAGS(b): 00000 00110010 01000110
EAX: 01040000 EBX: 00000000 ECX: 00000000 EDX: 00000000 VFLAGS(h): 00003246
ESI: 00000000 EDI: 00007020 EBP: 00007020 DS: 1f22 ES: 7020 FS: 02b0 GS: c3b6
FLAGS: PF ZF IF RF VM VIF IOPL: 3
STACK: 20 70 20 70 20 70 20 70 20 70 -> 20 70 20 70 20 70 20 70 20 70
OPS : 00 00 00 00 00 00 00 00 00 00 -> 00 00 00 00 00 00 00 00 00 00
0000 7020:0000 add [bx+si],al
00| 1ac2:00df->01acff 01| 00d1:1085->001d95 02| 1ac2:39f3->01e613
03| 00d1:1085->001d95 04| c239:f300->0d1690 05| d110:851a->0d961a
06| 00d1:10c2->001dd2 07| 1085:1ac2->012312 08| c006:00d1->0c0131
09| 1989:0811->01a0a1 0a| 0600:d110->013110 0b| 07f0:00c0->007fc0
0c| f000:c00e->0fc00e 0d| f000:c006->0fc006 0e| f000:c007->0fc007
0f| f000:c011->0fc011 10| 00c0:07f0->0013f0 11| d110:c2f0->0dd3f0
12| f000:c014->0fc014 13| 10c2:f000->01fc20 14| c009:00d1->0c0161
15| f000:c017->0fc017 16| 0900:d110->016110 17| a5f0:00c0->0a5fc0
18| f000:c01a->0fc01a 19| f000:c009->0fc009 1a| f800:7ea5->0ffea5
1b| 1989:0870->01a100 1c| 007e:a5f0->00add0 1d| 8908:11f8->08a278
1e| 0070:0000->000700 1f| 0811:f800->017910 20| c00c:1989->0c1a49
21| f000:c023->0fc023 22| 0c19:8908->014a98 23| 0df0:00c0->00dfc0
24| 1989:0932->01a1c2 25| f000:c00c->0fc00c 26| f000:c00d->0fc00d
27| 00d1:10b2->001dc2 28| 00c0:0df0->0019f0 29| 00c0:0ef0->001af0
2a| 00d1:1085->001d95 2b| c00e:f000->0cf0e0 2c| c00f:f000->0cf0f0
2d| 00d1:1085->001d95 2e| 0ff0:00c0->00ffc0 2f| 10f0:00c0->010fc0
30| d110:caea->0ddbea 31| f000:c00f->0fc00f 32| f000:c010->0fc010
33| efff:c045->0fc035 34| 00c0:10f0->001cf0 35| 00c0:11f0->001df0
leavedos(vm86_GP_fault|297) called - shutting down
closing debugger pipes
SPEAKER: sound off
calling SIG_close
calling keyboard_close
GEN: fd=14 removed from select SIGIO
00| 1ac2:00df->01acff 01| 00d1:1085->001d95 02| 1ac2:39f3->01e613
03| 00d1:1085->001d95 04| c239:f300->0d1690 05| d110:851a->0d961a
06| 00d1:10c2->001dd2 07| 1085:1ac2->012312 08| c006:00d1->0c0131
09| 1989:0811->01a0a1 0a| 0600:d110->013110 0b| 07f0:00c0->007fc0
0c| f000:c00e->0fc00e 0d| f000:c006->0fc006 0e| f000:c007->0fc007
0f| f000:c011->0fc011 10| 00c0:07f0->0013f0 11| d110:c2f0->0dd3f0
12| f000:c014->0fc014 13| 10c2:f000->01fc20 14| c009:00d1->0c0161
15| f000:c017->0fc017 16| 0900:d110->016110 17| a5f0:00c0->0a5fc0
18| f000:c01a->0fc01a 19| f000:c009->0fc009 1a| f800:7ea5->0ffea5
1b| 1989:0870->01a100 1c| 007e:a5f0->00add0 1d| 8908:11f8->08a278
1e| 0070:0000->000700 1f| 0811:f800->017910 20| c00c:1989->0c1a49
21| f000:c023->0fc023 22| 0c19:8908->014a98 23| 0df0:00c0->00dfc0
24| 1989:0932->01a1c2 25| f000:c00c->0fc00c 26| f000:c00d->0fc00d
27| 00d1:10b2->001dc2 28| 00c0:0df0->0019f0 29| 00c0:0ef0->001af0
2a| 00d1:1085->001d95 2b| c00e:f000->0cf0e0 2c| c00f:f000->0cf0f0
2d| 00d1:1085->001d95 2e| 0ff0:00c0->00ffc0 2f| 10f0:00c0->010fc0
30| d110:caea->0ddbea 31| f000:c00f->0fc00f 32| f000:c010->0fc010
33| efff:c045->0fc035 34| 00c0:10f0->001cf0 35| 00c0:11f0->001df0
calling disk_close_all
releasing ports and blocked devices
calling shared memory exit
calling HMA exit
calling mapping_close()
calling close_all_printers
No idea how debug it or how solve this?
Under the impression of late 'Different problems with different cpu_emu settings' series in dosemu-devel list I just build latest dosemu-1.4.0.8-git119.ge4ccb84 with CPU emulation enabled (before i configure it always with '--disable-cpuemu', as I run dosemu only on 32-bit distros with 'vm.mmap_min_addr = 0'). And there are results (dosemu run from X Terminal):
My program run fine with all $_cpu_emu variants ("off" "vm86" "full" "vm86sim" "fullsim") when dosemu run in X Window mode (xdosemu, 'dosemu -X')
My program crashes with all $_cpu_emu variants when dosemu run in terminal mode ('dosemu -t'). There are last parts of ~/.dosemu/boot.log :
$_cpu_emu=off : this wariant is described in my previous post.
$_cpu_emu=vm86 : I have seen three different reports:
1):
...
CONF: reserving 16Kb at 0xF0000 for 'E' (EMS page frame)
CONF: reserving 140Kb at 0xC1000 for 'U' (Upper Memory Block (UMB, XMS 3.0))
TIME: using 9154 usec for updating ALRM timer
ERROR: general protection at 0x70200: 0
Program=do_vm86.c, Line=294
EIP: 7020:00010000 ESP: 2a38:00003f80 VFLAGS(b): 00000 00110010 01000110
EAX: 01040000 EBX: 00000000 ECX: 00000000 EDX: 00000000 VFLAGS(h): 00003246
ESI: 00000000 EDI: 00007020 EBP: 00007020 DS: 202f ES: 7020 FS: 03bd GS: 0310
FLAGS: PF ZF IF RF VM VIF IOPL: 3
STACK: 20 70 20 70 20 70 20 70 20 70 -> 20 70 20 70 20 70 20 70 20 70
OPS : 00 00 00 00 00 00 00 00 00 00 -> 00 00 00 00 00 00 00 00 00 00
0000 7020:0000 add [bx+si],al
00| 1bcf:00df->01bdcf 01| 00d1:1085->001d95 02| 1bcf:39f3->01f6e3
03| 00d1:1085->001d95 04| cf39:f300->0de690 05| d110:851b->0d961b
06| 00d1:10c2->001dd2 07| 1085:1bcf->01241f 08| c006:00d1->0c0131
09| 1a96:0811->01b171 0a| 0600:d110->013110 0b| 07f0:00c0->007fc0
...
2):
...
CONF: reserving 16Kb at 0xEC000 for 'E' (EMS page frame)
CONF: reserving 16Kb at 0xF0000 for 'E' (EMS page frame)
CONF: reserving 140Kb at 0xC1000 for 'U' (Upper Memory Block (UMB, XMS 3.0))
TIME: using 9154 usec for updating ALRM timer
======================= ENTER CPU-EMU ===============
leavedos(Interp86|3056) called - shutting down
======================= LEAVE CPU-EMU ===============
3):
...
CONF: reserving 16Kb at 0xF0000 for 'E' (EMS page frame)
CONF: reserving 140Kb at 0xC1000 for 'U' (Upper Memory Block (UMB, XMS 3.0))
TIME: using 9154 usec for updating ALRM timer
======================= ENTER CPU-EMU ===============
Fault out of DOSEMU code, cs:eip=73:8113d3f, cr2=616b, fault_cnt=1
leavedos(Interp86|3056) called - shutting down
======================= LEAVE CPU-EMU ===============
$_cpu_emu=full : I have seen three different reports:
1):
...
CONF: reserving 140Kb at 0xC1000 for 'U' (Upper Memory Block (UMB, XMS 3.0))
TIME: using 9154 usec for updating ALRM timer
ERROR: general protection at 0x70200: 0
Program=do_vm86.c, Line=294
EIP: 7020:00010000 ESP: 2a38:00003f80 VFLAGS(b): 00000 00110010 01000110
EAX: 01040000 EBX: 00000000 ECX: 00000000 EDX: 00000000 VFLAGS(h): 00003246
ESI: 00000000 EDI: 00007020 EBP: 00007020 DS: 202f ES: 7020 FS: 03bd GS: 0310
FLAGS: PF ZF IF RF VM VIF IOPL: 3
STACK: 20 70 20 70 20 70 20 70 20 70 -> 20 70 20 70 20 70 20 70 20 70
OPS : 00 00 00 00 00 00 00 00 00 00 -> 00 00 00 00 00 00 00 00 00 00
0000 7020:0000 add [bx+si],al
00| 1bcf:00df->01bdcf 01| 00d1:1085->001d95 02| 1bcf:39f3->01f6e3
03| 00d1:1085->001d95 04| cf39:f300->0de690 05| d110:851b->0d961b
06| 00d1:10c2->001dd2 07| 1085:1bcf->01241f 08| c006:00d1->0c0131
09| 1a96:0811->01b171 0a| 0600:d110->013110 0b| 07f0:00c0->007fc0
0c| f000:c00e->0fc00e 0d| f000:c006->0fc006 0e| f000:c007->0fc007
0f| f000:c011->0fc011 10| 00c0:07f0->0013f0 11| d110:c2f0->0dd3f0
12| f000:c014->0fc014 13| 10c2:f000->01fc20 14| c009:00d1->0c0161
15| f000:c017->0fc017 16| 0900:d110->016110 17| a5f0:00c0->0a5fc0
18| f000:c01a->0fc01a 19| f000:c009->0fc009 1a| f800:7ea5->0ffea5
1b| 1a96:0870->01b1d0 1c| 007e:a5f0->00add0 1d| 9608:11f8->097278
1e| 0070:0000->000700 1f| 0811:f800->017910 20| c00c:1a96->0c1b56
...
2):
...
CONF: reserving 16Kb at 0xF0000 for 'E' (EMS page frame)
CONF: reserving 140Kb at 0xC1000 for 'U' (Upper Memory Block (UMB, XMS 3.0))
TIME: using 9154 usec for updating ALRM timer
======================= ENTER CPU-EMU ===============
leavedos(Interp86|3056) called - shutting down
======================= LEAVE CPU-EMU ===============
3):
...
CONF: reserving 140Kb at 0xC1000 for 'U' (Upper Memory Block (UMB, XMS 3.0))
TIME: using 9154 usec for updating ALRM timer
======================= ENTER CPU-EMU ===============
Fault out of DOSEMU code, cs:eip=73:8113d3f, cr2=616b, fault_cnt=1
leavedos(Interp86|3056) called - shutting down
======================= LEAVE CPU-EMU ===============
$_cpu_emu=vm86sim : I have seen two different reports:
1):
...
CONF: reserving 140Kb at 0xC1000 for 'U' (Upper Memory Block (UMB, XMS 3.0))
TIME: using 9154 usec for updating ALRM timer
ERROR: MFS: couldn't find root path /tmp/HRY
ERROR: general protection at 0x70200: 0
Program=do_vm86.c, Line=294
EIP: 7020:00010000 ESP: 2a38:00003f80 VFLAGS(b): 00000 00110010 01000110
EAX: 01040000 EBX: 00000000 ECX: 00000000 EDX: 00000000 VFLAGS(h): 00003246
ESI: 00000000 EDI: 00007020 EBP: 00007020 DS: 202f ES: 7020 FS: 03bd GS: 0310
FLAGS: PF ZF IF RF VM VIF IOPL: 3
STACK: 20 70 20 70 20 70 20 70 20 70 -> 20 70 20 70 20 70 20 70 20 70
OPS : 00 00 00 00 00 00 00 00 00 00 -> 00 00 00 00 00 00 00 00 00 00
0000 7020:0000 add [bx+si],al
00| 1bcf:00df->01bdcf 01| 00d1:1085->001d95 02| 1bcf:39f3->01f6e3
03| 00d1:1085->001d95 04| cf39:f300->0de690 05| d110:851b->0d961b
06| 00d1:10c2->001dd2 07| 1085:1bcf->01241f 08| c006:00d1->0c0131
09| 1a96:0811->01b171 0a| 0600:d110->013110 0b| 07f0:00c0->007fc0
0c| f000:c00e->0fc00e 0d| f000:c006->0fc006 0e| f000:c007->0fc007
0f| f000:c011->0fc011 10| 00c0:07f0->0013f0 11| d110:c2f0->0dd3f0
12| f000:c014->0fc014 13| 10c2:f000->01fc20 14| c009:00d1->0c0161
15| f000:c017->0fc017 16| 0900:d110->016110 17| a5f0:00c0->0a5fc0
18| f000:c01a->0fc01a 19| f000:c009->0fc009 1a| f800:7ea5->0ffea5
1b| 1a96:0870->01b1d0 1c| 007e:a5f0->00add0 1d| 9608:11f8->097278
1e| 0070:0000->000700 1f| 0811:f800->017910 20| c00c:1a96->0c1b56
21| f000:c023->0fc023 22| 0c1a:9608->0157a8 23| 0df0:00c0->00dfc0
24| 1a96:0932->01b292 25| f000:c00c->0fc00c 26| f000:c00d->0fc00d
27| 00d1:10b2->001dc2 28| 00c0:0df0->0019f0 29| 00c0:0ef0->001af0
2a| 00d1:1085->001d95 2b| c00e:f000->0cf0e0 2c| c00f:f000->0cf0f0
2d| 00d1:1085->001d95 2e| 0ff0:00c0->00ffc0 2f| 10f0:00c0->010fc0
30| d110:caea->0ddbea 31| f000:c00f->0fc00f 32| f000:c010->0fc010
33| efff:c045->0fc035 34| 00c0:10f0->001cf0 35| 00c0:11f0->001df0
leavedos(vm86_GP_fault|297) called - shutting down
closing debugger pipes
SPEAKER: sound off
calling SIG_close
calling keyboard_close
GEN: fd=14 removed from select SIGIO
00| 1bcf:00df->01bdcf 01| 00d1:1085->001d95 02| 1bcf:39f3->01f6e3
03| 00d1:1085->001d95 04| cf39:f300->0de690 05| d110:851b->0d961b
06| 00d1:10c2->001dd2 07| 1085:1bcf->01241f 08| c006:00d1->0c0131
09| 1a96:0811->01b171 0a| 0600:d110->013110 0b| 07f0:00c0->007fc0
0c| f000:c00e->0fc00e 0d| f000:c006->0fc006 0e| f000:c007->0fc007
0f| f000:c011->0fc011 10| 00c0:07f0->0013f0 11| d110:c2f0->0dd3f0
12| f000:c014->0fc014 13| 10c2:f000->01fc20 14| c009:00d1->0c0161
15| f000:c017->0fc017 16| 0900:d110->016110 17| a5f0:00c0->0a5fc0
18| f000:c01a->0fc01a 19| f000:c009->0fc009 1a| f800:7ea5->0ffea5
1b| 1a96:0870->01b1d0 1c| 007e:a5f0->00add0 1d| 9608:11f8->097278
1e| 0070:0000->000700 1f| 0811:f800->017910 20| c00c:1a96->0c1b56
21| f000:c023->0fc023 22| 0c1a:9608->0157a8 23| 0df0:00c0->00dfc0
24| 1a96:0932->01b292 25| f000:c00c->0fc00c 26| f000:c00d->0fc00d
27| 00d1:10b2->001dc2 28| 00c0:0df0->0019f0 29| 00c0:0ef0->001af0
2a| 00d1:1085->001d95 2b| c00e:f000->0cf0e0 2c| c00f:f000->0cf0f0
2d| 00d1:1085->001d95 2e| 0ff0:00c0->00ffc0 2f| 10f0:00c0->010fc0
30| d110:caea->0ddbea 31| f000:c00f->0fc00f 32| f000:c010->0fc010
33| efff:c045->0fc035 34| 00c0:10f0->001cf0 35| 00c0:11f0->001df0
calling disk_close_all
releasing ports and blocked devices
calling shared memory exit
calling HMA exit
calling mapping_close()
calling close_all_printers
2):
...
CONF: reserving 16Kb at 0xEC000 for 'E' (EMS page frame)
CONF: reserving 16Kb at 0xF0000 for 'E' (EMS page frame)
CONF: reserving 140Kb at 0xC1000 for 'U' (Upper Memory Block (UMB, XMS 3.0))
TIME: using 9154 usec for updating ALRM timer
======================= ENTER CPU-EMU ===============
ERROR: unexpected CPU exception 0x0e err=0x00000006 cr2=08738120 while in vm86 (DOS)
leavedos(dosemu_fault1|204) called - shutting down
leavedos() called from within a signal context!
======================= LEAVE CPU-EMU ===============
Have one any idea how I can help more?
Sorry, I can't reproduce your problem on
the current git branch "devel".
Even with 'dosemu -t' it works fine for me.
So either something was recently fixed, or
there is something in your config.sys/autoexec.bat
that prevents it from working.
I just tried it with current branch 'devel' (228.g930be0d) and dosemu still crashes.
Crashes with $_cpu_emu="off", "vm86", "vm86sim" (all what I tried).
I build it with "--with-fdtarball=dosemu-freedos-1.0-bin.tgz --with-svgalib --target=i686 --with-gpm --enable-debug --with-alsa --with-sndfile --with-x --with-slang --with-target-cpu=i686 --disable-aspi".
My 'config.sys':
DOS=UMB,HIGH
dosdata=umb
lastdrive=Z
install=d:\dosemu\lredir.com z: linux\fs\${DOSEMU_LIB_DIR}/drive_z ro
shellhigh=z:\command.com /e:1024 /p
My 'autoexec.bat':
@echo off
path z:\bin;z:\gnu;z:\dosemu
set TEMP=c:\tmp
prompt $P$G
cd \ui
instal
My 'dosemu.conf':
$_cpu = "80686"
$_cpu_emu = "off"
$_rdtsc = (on)
$_hogthreshold = (0)
$_full_file_locks = (on)
$_dosmem = (640)
$_xms = (16384)
$_ems = (4096)
$_debug = "-a+cw"
logfilesize 0x2000000
$_external_char_set = "utf8"
$_internal_char_set = "cp895"
$_layout = "auto"
$_rawkeyboard = (0)
$_lpt1 = "lpr -l -P k5400"
$_lpt3="/usr/local/bin/dospclwork >/tmp/dospclwork2.log 2>/tmp/dospclwork2.err"
$_printer_timeout = (5)
$_speaker = "native"
$_sound = (2)
$_pktdriver = (off)
$_X_title = "DOS in a KLEMP LINUX BOX"
$_X_title_show_appname = (on)
$_X_icon_name = "X Dosemu"
$_X_keycode = (off)
$_X_mitshm = (off)
$_X_fixed_aspect = (off)
$_X_aspect_43 = (off)
$_X_lin_filt = (on)
$_X_bilin_filt = (on)
$_X_winsize = "1276,996"
$_X_vgaemu_memsize = (8192)
$_X_background_pause = (off)
$_console = (0)
$_graphics = (0)
When this program run for You, then maybe I have some specific HW or SW configuration? As I'm not so good Linux programmer, but I want tutor something, can You kick me to right way what I should try now?
So your config.sys/autoexec.bat look harmless.
But your dosemu.conf is not: please reproduce
the problem on the default dosemu.conf, with
minimal changes (change only pathes to drives).
My freedos is "2036 cvs".
As for HW configuration, I am running on x86_64,
which should be matched by $_cpu_emu="vm86", which
is what you seem to have already tried...
Another thing you should try is to disable
DOS=HIGH,UMB
I just try this program again, with actual DOSEMU devel branch git 402.gffd9c3c on Fedora 19 i686, with 'cpu_emu = "off"' (vm.mmap_min_addr = 0).
My /etc/dosemu/dosemu.conf is minimal only:
$_debug = "+9a"
logfilesize 0x66543210
$_sound = (0)
(I must have '$_sound = (0)', because otherwise DOSEMU exits on permission error:
Failed to create secure directory (/run/user/1000/pulse): Permission denied
Failed to create secure directory (/run/user/1000/pulse): Permission denied
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
). Other two lines are only for debugging, DOSEMU crashes identically if they are commented, at same addresses.
Behavior is same as I described previously, 'xdosemu' work fine, but 'dosemu -t' crashes. Parts '+9a' log outputs from both runs immediately before crash are:
'xdosemu':
DO_VM86, cs=fc00:0233 ss=00d1:08ce f=00033247
ax=0002 bx=2cdb ss=00d1 sp=08ce bp=08e2
cx=0000 dx=01be ds=00d1 cs=fc00 ip=0233
si=01be di=01be es=00d1 flg=00033247
RET_VM86, cs=fc00:0233 ss=00d1:08ce f=00033247 ret=0x1
ax=0002 bx=2cdb ss=00d1 sp=08ce bp=08e2
cx=0000 dx=01be ds=00d1 cs=fc00 ip=0233
si=01be di=01be es=00d1 flg=00033247
DO_VM86, cs=ffff:15ae ss=00d1:08ce f=000b3247
ax=0002 bx=2cdb ss=00d1 sp=08ce bp=08e2
cx=0000 dx=01be ds=00d1 cs=ffff ip=15ae
si=01be di=01be es=00d1 flg=000b3247
RET_VM86, cs=fc00:0103 ss=2923:3caa f=00033247 ret=0x1
ax=0002 bx=3cb2 ss=2923 sp=3caa bp=3cb2
cx=0000 dx=3df2 ds=2923 cs=fc00 ip=0103
si=3cd0 di=3dc2 es=2923 flg=00033247
DO_VM86, cs=1aba:4210 ss=2923:3cb0 f=000b3247 <=======
ax=0002 bx=3cb2 ss=2923 sp=3cb0 bp=3cb2 <=======
cx=0000 dx=3df2 ds=2923 cs=1aba ip=4210 <=======
si=3cd0 di=3dc2 es=2923 flg=000b3247 <=======
RET_VM86, cs=1981:016e ss=2923:3e3e f=000b3202 ret=0x3302 <=======
ax=0002 bx=0000 ss=2923 sp=3e3e bp=3e50 <=======
cx=0050 dx=0000 ds=1f1a cs=1981 ip=016e <=======
si=b800 di=18c4 es=1f1a flg=000b3202 <=======
Do INT0x33 eax=0x01040002 ebx=0x00000000 ss=0x2923 esp=0x00003e3e
ecx=0x00000050 edx=0x00000000 ds=0x1f1a cs=0x1981 ip=0x016e
esi=0x0000b800 edi=0x000018c4 es=0x1f1a flg=0x000b3202
DO_VM86, cs=fc00:0237 ss=2923:3e3e f=00033202
ax=0002 bx=0000 ss=2923 sp=3e3e bp=3e50
cx=0050 dx=0000 ds=1f1a cs=fc00 ip=0237
si=b800 di=18c4 es=1f1a flg=00033202
'dosemu -t':
DO_VM86, cs=fc00:0233 ss=00d1:08ce f=00033247
ax=0002 bx=2cdb ss=00d1 sp=08ce bp=08e2
cx=0000 dx=01be ds=00d1 cs=fc00 ip=0233
si=01be di=01be es=00d1 flg=00033247
RET_VM86, cs=fc00:0233 ss=00d1:08ce f=00033247 ret=0x1
ax=0002 bx=2cdb ss=00d1 sp=08ce bp=08e2
cx=0000 dx=01be ds=00d1 cs=fc00 ip=0233
si=01be di=01be es=00d1 flg=00033247
DO_VM86, cs=ffff:15ae ss=00d1:08ce f=000b3247
ax=0002 bx=2cdb ss=00d1 sp=08ce bp=08e2
cx=0000 dx=01be ds=00d1 cs=ffff ip=15ae
si=01be di=01be es=00d1 flg=000b3247
RET_VM86, cs=fc00:0103 ss=2923:3caa f=00033247 ret=0x1
ax=0002 bx=3cb2 ss=2923 sp=3caa bp=3cb2
cx=0000 dx=3df2 ds=2923 cs=fc00 ip=0103
si=3cd0 di=3dc2 es=2923 flg=00033247
DO_VM86, cs=1aba:4210 ss=2923:3cb0 f=000b3247 <=======
ax=0002 bx=3cb2 ss=2923 sp=3cb0 bp=3cb2 <=======
cx=0000 dx=3df2 ds=2923 cs=1aba ip=4210 <=======
si=3cd0 di=3dc2 es=2923 flg=000b3247 <=======
RET_VM86, cs=7020:10000 ss=2923:3f80 f=000b3246 ret=0x1 <=======
ax=0000 bx=0000 ss=2923 sp=3f80 bp=7020 <=======
cx=0000 dx=0000 ds=1f1a cs=7020 ip=0000 <=======
si=0000 di=7020 es=7020 flg=000b3246 <=======
ERROR: general protection at 0x70200: 0
Program=do_vm86.c, Line=299
EIP: 7020:00010000 ESP: 2923:00003f80 VFLAGS(b): 00000 00110010 01000110
EAX: 01040000 EBX: 00000000 ECX: 00000000 EDX: 00000000 VFLAGS(h): 00003246
ESI: 00000000 EDI: 00007020 EBP: 00007020 DS: 1f1a ES: 7020 FS: 02a8 GS: c392
FLAGS: PF ZF IF RF VM VIF IOPL: 3
Comparing them, it seems as there is some bad inside '<==' marked 'DO_VM86' block: although logged register values at block beginning (displayed at DO_VM86 level) are same,
those displayed at block end (at RET_VM86 level) are different and in 'dosemu -t' case apparently bad.
IMO this may somehow relate with video output, as I thing somewhere in this position program begin display something (in semi-graphics mode).
Is there any method, which I can did, for this error further discovery?
What program does in VM_86 block?
I'm looking at emu-i386/do_vm86.c and include/vm86plus.h, but it is perhaps beyond my ability... :(
small step onwards - according to xdosemu log (which run fine) it seems as somewhere closely to crash position DOSEMU leave run_vm86() because to INT 0x33 ax=2 (MS MOUSE v1.0+ - HIDE MOUSE CURSOR). And after some fiddling I find that DOSEMU crash not occurs when I run DOSEMU from 'pure' DOS console when resolution is 80x25 chars (using 'nomodeset' kernel param and replacing 'gfxterm' by 'console' in grub2.cfg).
Program not crashes even when I run it as 'dosemu -t' in xterm, when I resize xterm window to 80x25 (according to 'stty -a'). My previous 'always occured crashes' was because I had in both console and xterm resolution different than 80x25 (essentially bigger).
Reviewing log, I see from program start several int 33 Mouse calls, but none was with AX=2 - this was not called until crash point.
Is this info useful? Can I did something further?
Reproduceable with the large xterm.
How have you found out its a dosemu's
fault? Does it work fine under enlarged
dosbox?
I am inclined to close this.
Primary bug can be in program itself, in its Turbopascal units/compiled code, or in FreeDOS code, I not know and I don't know how uncover it, I have no program sources (and will not have), as well Turbopascal sources.
What is a bit strange is facts, that 1) under X it seems work fine, and 2) dosemu probably (but again, I'm not sure) should not crash in this manner.
But, as it is only installer for DOS program, and now is clear how avoid this crash, I fully agree to close this.
Once again, many thanks for Your effort with this problem.
How have you enlarged xdosemu to test this?
It is a "polite" crash, dosemu detected the
CPU exception after IP overflowed.
The error message doesn't suggest the polite
manner simply because usually the encountered
exception in DOS code means that dosemu did
something wrong already before. So the error
was made vocal. But in this case it is not obvious.
Running on big terminal is an undocumented feature,
I'd say.
It may be a dosemu bug, but I wonder how to
even verify that...
Hmm, doesn't seem to be reproduceable with
PC-DOS... Could you try on MS-DOS?
I'd little problem obtain msdos, but now I tested with v6.22, with results:
independently on setting no. of rows (I tried 25 - 128), when I had no. of columns up to 133, then all was fine. When I tried 134 columns and more, MS-DOS 6.22/DOSEMU crashes with same error as I described above with FreeDOS (
ERROR: general protection at 0x70200: 0
Program=do_vm86.c, Line=299
EIP: 7020:00010000 ESP: 38fa:00003f80 VFLAGS(b): 00000 00110010 01000110
EAX: 00000000 EBX: 00000000 ECX: 00000000 EDX: 00000000 VFLAGS(h): 00003246
ESI: 00000000 EDI: 00007020 EBP: 00007020 DS: 2ef1 ES: 7020 FS: 0000 GS: 0000
FLAGS: PF ZF IF RF VM VIF IOPL: 3
STACK: 20 70 20 70 20 70 20 70 20 70 -> 20 70 20 70 20 70 20 70 20 70
OPS : 00 00 00 00 00 00 00 00 00 00 -> 00 00 00 00 00 00 00 00 00 00
)
When I set 129 rows and more, DOSEMU ends 'smoothly' with message (here I had screen size 106 columns and 131 rows):
ERROR: Screen size is too large: 106x131, max is 255x128
You are right, independent of DOS.
Its just that at home my monitor is too
small so 134 was not occuring.
I have no idea what to do about this.
http://help.fdos.org/en/hhstndrd/base/mode.htm
Here it is said that mode.com can set
up to 132x60. Maybe dosemu should just
enforce that limit, I have no idea.
Obviously 132 is very close to the 133
value you discovered, so it looks like
the real limit of something somewhere.
And this needs to be verified with other
emulators too, but you can't. :)
Bart, any help?
As according to actual VESA Bios Extensions (VBE) 3.0 here:
http://en.wikipedia.org/wiki/VESA_BIOS_Extensions
, upper limits for text mode is 132 columns and 60 rows. Thus IMO DOSEMU should eventually print some warning /to log?/ about likely problems when these boundaries are exceeded, but nothing else perhaps should be done, nobody on DOS expect some bigger values for cols/lines.
Running in text mode with greater resolution than 60x132 maybe will be without problems when printing text on screen in flat raw mode, and problems are expected in cases where are provided some direct cursor addressing and/or mouse operations.
Thus I really prefer close this case; waste of time
Even this doesn't look good, because the
text modes only provide fixed resolutions,
not any resolution in range 1...132.
And printing the warning for any resolution
that differs from the default values, doesn't
sound too sensible either.