dosemu2 / dosemu2

Run DOS programs under linux:
http://dosemu2.github.io/dosemu2/
GNU General Public License v2.0
575 stars 59 forks source link

binary errors vs compiled from source #1303

Closed Carpintonto closed 4 years ago

Carpintonto commented 4 years ago

Package: dosemu2-legacy Version: 2.0~pre8-6310-6cc58879a+202009191417~ubuntu18.04.1

$ dosemu

ERROR: KVM: error opening /dev/kvm: Permission denied Compatibility warning: CONFIG.SYS found on drive C: is not used by fdpp. Use C:\FDPPCONF.SYS to override or C:\USERHOOK.SYS to extend the default boot-up config file. You can also put KERNEL.SYS to drive C: to override fdpp entirely. ERROR: Fault handler re-entered! signal=11 _trapno=0xE ERROR: BUG: Fault handler re-entered not within dosemu code! in_vm86=1 ERROR: cpu exception in dosemu code outside of VM86()! sig: 11 trapno: 0x0e errorcode: 0x00000004 cr2: 0x00002ca5 eip: 0x55cb84aafac5 esp: 0x7ffe4b503270 eflags: 0x00010246 cs: 0x0033 ds: 0x0000 es: 0x0000 ss: 0x002b fs: 0x0000 gs: 0x0000 fsbase: 0x7ff2d0117740 gsbase: (nil)

ERROR: Please install gdb, update dosemu from git, compile it with debug info and make a bug report with the content of ~/.dosemu/boot.log at https://github.com/dosemu2/dosemu2/issues Please provide any additional info you can, like the test-cases, URLs and all the rest that fits.

removing stale files: /home/john/.dosemu/run/dosemu.dbgin.17487 /home/john/.dosemu/run/dosemu.dbgout.17487 Terminated with signal 127

Compiled from source: [splash] boot.log

Written by Stas Sergeev, FDPP project. Based on FreeDOS sources (C) Pasquale J. Villani and The FreeDOS Project.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

C: HD1, Pri[ 1], CHS= 0-1-1, start= 0 MB, size= 2000 MB D: HD2, Pri[ 1], CHS= 0-1-1, start= 0 MB, size= 2000 MB E: HD3, Pri[ 1], CHS= 0-1-1, start= 0 MB, size= 2000 MB F: HD4, Pri[ 1], CHS= 0-1-1, start= 0 MB, size= 2000 MB dosemu XMS 3.0 & UMB support enabled dosemu EMS driver rev 0.8 installed. EMUFS host file and print access available dosemu CDROM driver installed (V0.2) Kernel: allocated 115 Diskbuffers = 62560 Bytes in HMA Process 0 starting: F:\command.com /e:384 /k %FDPP_AUTOEXEC% BLASTER=A220 I5 D1 H5 P330 T6 MIDI=SYNTH:2 MAP:E MODE:0 Welcome to dosemu2! Build 2.0pre8-20201004-2355-gc2590dee5

C:>

terminal output
$ dosemu

ERROR: KVM: error opening /dev/kvm: Permission denied
ERROR: alsa_midi (ALSA lib): rawmidi_hw.c:233:(snd_rawmidi_hw_open) : No such file or directory open /dev/snd/midiC0D0 failed
Compatibility warning: CONFIG.SYS found on drive C: is not used by fdpp.
    Use C:\FDPPCONF.SYS to override or C:\USERHOOK.SYS to extend
    the default boot-up config file.
    You can also put KERNEL.SYS to drive C: to override fdpp entirely.
ERROR: handler for sig 28 not registered
ERROR: handler for sig 28 not registered
ERROR: handler for sig 28 not registered

[2 subsequent runs have not thrown the sig 28 error]

~/.dosemu/boot.log

FDPP kernel 1.0final [GIT: ] (compiled Oct 3 2020) fdpp: plugin loaded CONF: Parsing built-in dosemu.conf file. CONF: Parsing /etc/dosemu/dosemu.conf file. CONF: Parsing built-in global.conf file. CONF: mapping driver = 'auto' debug flags: -a+cw CONF: Disabling use of pentium timer CONF: timer freq=18, update=54925 CONF: CPU set to 586 CONF: JIT CPUEMU set to 0 for 586 CONF: CPU VM set to -1 CONF: CPU VM set to -1 for DPMI CONF: 8192k bytes EMS memory CONF: EMS-frame = 0xe000 CONF: DPMI-Server on (0x20000) CONF: DPMI linear reserve base addr = 0xffffffff CONF: DPMI linear reserve size = 0x8000 CONF: PM DOS API Translator on CONF: No DJGPP NULL deref checks: on CONF: 8192k bytes XMS memory CONF: dosemu not running on console CONF: time mode = 'bios' SER: directory /var/lock namestub LCK.. binary No MOUSE: /dev/input/mice, type 7 using internaldriver: yes, emulate3buttons: no baudrate: 0 CONF: **** Warning: floppy /dev/fd0 not accessible, disabled CONF: fastfloppy = 1 default_drives 0 Setting up drive C, ~/.dosemu/drive_c Creating default drive C Added drive 0 (80): ~/.dosemu/drive_c default_drives 1 Added drive 1 (81): /usr/local/share/dosemu/dosemu2-cmds-0.3 Setting up default drives from E Added drive 2 (82): /usr/share/fdpp Added drive 3 (83): /usr/share/comcom32 CONF: IPX support off CONF(LPT0) f: (null) c: lpr -l t: 20 port: 0 CONF(LPT1) f: (null) c: lpr -P PDF t: 20 port: 0 CONF: not allowing speaker port access CONF: Packet Driver enabled. CONF: NE2000 disabled. CONF: config variable c_system unset Linux kernel 4.15.0; CPU speed is 2562168000 Hz CPU-EMU speed is 2562 MHz CONF: not running on console CONF: mostly running as USER: uid=1000 (cached 1000) gid=1000 (cached 1000) CONF: priv operations unavailable DBG_FD already set DOSEMU-2.0pre8-20201004-2355-gc2590dee5 is coming up on Linux version 4.15.0-118-generic #119-Ubuntu SMP Tue Sep 8 12:30:01 UTC 2020 x86_64 Compiled with gcc version 7.5.0 64bit CFLAGS: -Wall -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -fms-extensions -pthread -Wno-unused-result -Wcast-qual -Wwrite-strings -Wno-string-plus-int -fplan9-extensions -Wno-maybe-uninitialized -fpie -fsanitize=undefined -fno-sanitize=alignment -ggdb3 -O0 CONF: reserving 640Kb at 0x00000 for 'd' (Base DOS memory (first 640K)) CONF: reserving 8Kb at 0xFC000 for 'r' (Dosemu reserved area) CONF: reserving 8Kb at 0xFE000 for 'b' (BIOS) ERROR: KVM: error opening /dev/kvm: Permission denied KVM not available: Permission denied using CPU emulation for vm86() initial register values: fs: 0x0000 gs: 0x0000 eflags: 0x0206 initial segment bases: fs: 0x7f2f240a8340 gs: (nil) CONF: reserving 128Kb at 0xA0000 for 'v' (Video memory) Conventional memory mapped from 0x7f2f1cfd4000 to 0x40ddf000 DPMI memory mapped to 0x40eef000 (reserve) and to 0x42eef000 (main) CONF: reserving 8256Kb at 0x100000 for 'x' (Extended memory (HMA+XMS)) VID: initializing video X X: X_init Registering HWRAM, type=e base=0x408e5000 size=0x400000 CONF: reserving 4096Kb at 0x408E5000 for 'e' (VGAEMU LFB) loading fonts for cp437 CONF: reserving 12Kb at 0xC0000 for 'V' (VGAEMU Video BIOS) SERIAL $Id$ ERROR: alsa_midi (ALSA lib): rawmidi_hw.c:233:(snd_rawmidi_hw_open) : No such file or directory open /dev/snd/midiC0D0 failed DPMI: mem init, mpool is 136273920 bytes at 0x42eef000 CONF: detected layout is "us" CONF: detected alternate layout: (null) TIME: using 9154 usec for updating ALRM timer ======================= ENTER CPU-EMU ===============

CONF: freeing region for 'E' (EMS page frame) booting with comcom32 Compatibility warning: CONFIG.SYS found on drive C: is not used by fdpp. Use C:\FDPPCONF.SYS to override or C:\USERHOOK.SYS to extend the default boot-up config file. You can also put KERNEL.SYS to drive C: to override fdpp entirely. config.boot_dos set to 20000 config.int_hooks set to 0 config.force_revect set to 0 CONF: reserving 116Kb at 0xC3000 for 'U' (Upper Memory Block (UMB, XMS 3.0)) CONF: reserving 48Kb at 0xF0000 for 'U' (Upper Memory Block (UMB, XMS 3.0)) CONF: reserving 16Kb at 0xE0000 for 'E' (EMS page frame) CONF: reserving 16Kb at 0xE4000 for 'E' (EMS page frame) CONF: reserving 16Kb at 0xE8000 for 'E' (EMS page frame) CONF: reserving 16Kb at 0xEC000 for 'E' (EMS page frame)

stsp commented 4 years ago

Please, explain things cleanly. As I understand, you have crash with the pre-build packages, but there is no log here for that crash.

As I understand, compiled from source runs properly for you, except for some errors in terminal?

andrewbird commented 4 years ago

BTW the sig 28 warning happens after resizing the terminal dosemu2 is started from (even if it's X or SDL)

stsp commented 4 years ago

Thanks, good hint! I'll silence those. Tests stil failing: https://travis-ci.com/github/dosemu2/dosemu2/builds/188135265

andrewbird commented 4 years ago

Tests stil failing:

That's legacy branch, not sure why the console behaviour should be different on that?

stsp commented 4 years ago

https://travis-ci.com/github/dosemu2/dosemu2/builds/188135219 devel fails.

andrewbird commented 4 years ago

Okay it looks like @tkchia must have a log file with further detail that I'm not displaying when the test returns an error. But I wonder why this changed, it was passing for me last night https://travis-ci.com/github/dosemu2/dosemu2/builds/188040797, but I suppose there has been a commit to https://github.com/tkchia/libi86/commit/1856e39f82455b9a5ac77ec22c511a6436d7a178 since then.

andrewbird commented 4 years ago

Perhaps we should be checking out a specific revision of libi86, after all we are supposed to be checking dosemu2 not libi86, but I guess then we'd have to periodically find a new known good version to bump to.

I have to go out soon for an hour or two, so I'll look at displaying the logfile on error when I get back.

tkchia commented 4 years ago

Hello @andrewbird, hello @stsp,

For my libi86, you can generally consider the Git-tagged commits to be stable enough for your use --- they have passed the full suite of regression tests and should cut the mustard.

(Though I am not sure if there is any good way to automatically do that with the git command line interface. There really should be...)

For https://github.com/tkchia/libi86/commit/1856e39f82455b9a5ac77ec22c511a6436d7a178 (not tagged), I did do some testing, but not very exhaustively, so it is indeed possible that this is causing the tests to fail on your end.

I am now trying to do a more thorough check on it.

Thank you!

Carpintonto commented 4 years ago

Please, explain things cleanly. As I understand, you have crash with the pre-build packages, but there is no log here for that crash.

As I understand, compiled from source runs properly for you, except for some errors in terminal?

correct. pre-built dosemu2-legacy was the only candidate available. I'm pretty sure the attached herein is the boot log for that attempt, and yes, the compiled from source seems to work. (First time I have ever seen dosemu)

binary.log

tkchia commented 4 years ago

Hello @andrewbird, hello @stsp,

For my libi86, you can generally consider the Git-tagged commits to be stable enough for your use --- they have passed the full suite of regression tests and should cut the mustard.

(Though I am not sure if there is any good way to automatically do that with the git command line interface. There really should be...)

For tkchia/libi86@1856e39 (not tagged), I did do some testing, but not very exhaustively, so it is indeed possible that this is causing the tests to fail on your end.

I am now trying to do a more thorough check on it.

Hmm, even with https://github.com/tkchia/libi86/commit/1856e39f82455b9a5ac77ec22c511a6436d7a178 , all the libi86 tests are passing with no problems on my end --- in case you are curious. Thank you!

andrewbird commented 4 years ago

@tkchia yes, even rolling back to your 20201003 tag doesn't fix it, I'll try rolling back dosemu2 a little. Sorry!

andrewbird commented 4 years ago

@stsp it looks like be9060f7 broke things(for libi86 and travis).

stsp commented 4 years ago

Thanks, I reverted that patch.

stsp commented 4 years ago

@Carpintonto Yes, much better log, but still misses debuginfo. You need to install debuginfo package for the good log.

Anyway, I tried to fix all the problems you got here. I updated the packages at LP, so please upgrade and try again. Sorry for having all these troubles - dosemu2 is still an alpha software, so stuff happens.

Carpintonto commented 4 years ago

@stsp I will in a couple hours when I get over to where my laptop is - same Ubuntu 18.04.5. I will be glad to install the debuginfo package before I do. Now that I have a working installation on my desktop I'd just as soon let it be.

stsp commented 4 years ago

Don't forget to do sudo make uninstall to remove the version you built from sources, before installing the new debs.

Carpintonto commented 4 years ago

Not going to try to install the package where I have the compiled from source working. I will try to install the package on my laptop - same distro and version. Soon

Carpintonto commented 4 years ago

If I uninstall the binary package dosemu2-legacy version 2.0~pre8-6313-30e58b03a+202010091737~ubuntu18.04.1

the version compiled from source will not run - complains: $ dosemu ERROR: fdpp support not compiled in or not found: ERROR: libfdpp.so: cannot open shared object file: No such file or directory ERROR: can't load fdpp ERROR: Directory /usr/local/share/dosemu/fdboot does not exist ERROR: Neither FreeDOS nor comcom32 installation found. Use DOSEMU2_FREEDOS_DIR env var to specify alternative location. ERROR: KVM: error opening /dev/kvm: Permission denied ERROR: ladspa: failed to load filter.so ERROR: alsa_midi (ALSA lib): rawmidi_hw.c:233:(snd_rawmidi_hw_open) : No such file or directory open /dev/snd/midiC0D0 failed ERROR: Bootable drive not found, exiting

Also, after reinstalling the binary package, /usr/bin/dosemu crashes, complaining $ /usr/bin/dosemu ERROR: KVM: error opening /dev/kvm: Permission denied Compatibility warning: CONFIG.SYS found on drive C: is not used by fdpp. Use C:\FDPPCONF.SYS to override or C:\USERHOOK.SYS to extend the default boot-up config file. You can also put KERNEL.SYS to drive C: to override fdpp entirely. ERROR: CPU-EMU: Zero-len code node? ERROR: Accessing reserved memory at 33e807700 Maybe a null segment register ERROR: Fault handler re-entered! signal=11 _trapno=0xE ERROR: BUG: Fault handler re-entered not within dosemu code! in_vm86=1 ERROR: cpu exception in dosemu code outside of VM86()! sig: 11 trapno: 0x0e errorcode: 0x00000004 cr2: 0x33e807700 eip: 0x7ff1ea49753f esp: 0x7fff4095dec0 eflags: 0x00010246 cs: 0x0033 ds: 0x0000 es: 0x0000 ss: 0x002b fs: 0x0000 gs: 0x0000 fsbase: 0x7ff1ec3c3740 gsbase: (nil)

So, to have dosemu launch I have to have installed binary package AND compiled from source, and run compiled from source. Fortunately this is automatic.

$ which dosemu /usr/local/bin/dosemu

stsp commented 4 years ago

Besides uninstalling dosemu2, you probably also uninstall its dependencies (by doing sudo apt autoremove or something like that), and this is why compiled from sources fails to work. You can install fdpp and comcom32 packages, then rebuild dosemu from sources and reinstall it with "make install". And never mix built/packaged ones again.

Carpintonto commented 4 years ago

Right - I should have completely uninstalled the binary package before installing compiled from source. I'll do that on my other box running Ubuntu 18.04.05 to confirm, as I have not compiled dosemu on it.

That being said, I think it's a great emulator. I just ran an ancient DOS compiler, PowerBasic 3 and it spit out a working exe. <-- well done!

stsp commented 4 years ago

Right - I should have completely uninstalled the binary package before installing compiled from source.

No, that's not the case. You need to leave fdpp and comcom32 installed, or nothing will work (or you will have to build them too, which you don't want to do)

Carpintonto commented 4 years ago

copy that - thanks!