Hi there. I have very strange behaviour with emscripten version of
dosbox-x.
I use exactly same codebase for PC and browser. But they are behave
differently.

For example I have this simple DOS program:

#include <conio.h>

void main (int argc, char *argv[]) {
  printf("%.2f\n", (double) 1000);
}

I compile it for dos, and run it with dosbox-x in browser and PC.
The PC output is 1000.00, but the browser output is 0.00.
The weirdest thing is that this only happens with printf and %.2f, I tried
David M. Gay's 'dtoa()' function to print the doubles
manually and it works exactly the same under dosbox-x in browser and PC.

Asan, UBsan and valgrind does not see any errors in the code when I run it
on PC.

I build dosbox-x with stacksize  = 1Mb, and I found that if I restore
default value it start failing randomly.
But error is always "unrechable executed" and not related to stacksize.

I tried Asan, UBsan for borwser build, and they are totaly ueseless they
always end with same "unreachable executed" in same funcitons as a build
without it.
-s SAFE_HEAP=1/2 -sASSERTIONS=1 also end with "unreachable executed" in
same functions.

I also tried -O1,O2 builds, nothing changed. I can't run -O0 because of the
browser's local limits.

The typical error stack is:

ncaught RuntimeError: unreachable
    at DOS_Device::Write(unsigned char const*, unsigned short*)
(0505c02e:0xb04ce3)
    at DOS_WriteFile(unsigned short, unsigned char const*, unsigned short*,
bool) (0505c02e:0x1bc6a)
    at Program::WriteOut(char const*, ...) (0505c02e:0x9850)
    at showWelcome(Program*) (0505c02e:0x3a8372)
    at DOS_Shell::Prepare() (0505c02e:0xad20b5)
    at SHELL_Run() (0505c02e:0x95461e)
    at BIOS::cb_bios_boot__func() (0505c02e:0xc2be24)
    at Normal_Loop() (0505c02e:0x9b4470)
    at DOSBOX_RunMachine() (0505c02e:0xd3a9c)
    at jsdos_main(Config*) (0505c02e:0x7a3261)
$DOS_Device::Write(unsigned char const*, unsigned short*) @
0505c02e:0xb04ce3
$DOS_WriteFile(unsigned short, unsigned char const*, unsigned short*, bool)
@ 0505c02e:0x1bc6a
$Program::WriteOut(char const*, ...) @ 0505c02e:0x9850
$showWelcome(Program*) @ 0505c02e:0x3a8372
$DOS_Shell::Prepare() @ 0505c02e:0xad20b5
$SHELL_Run() @ 0505c02e:0x95461e
$BIOS::cb_bios_boot__func() @ 0505c02e:0xc2be24
$Normal_Loop() @ 0505c02e:0x9b4470
$DOSBOX_RunMachine() @ 0505c02e:0xd3a9c
$jsdos_main(Config*) @ 0505c02e:0x7a3261
$server_run() @ 0505c02e:0x75a157
$runRuntime @ 0505c02e:0x75edbf
ret.<computed> @ 7218a4e8-6c38-4c3c-9e76-65c481c94470:8
doRewind @ 7218a4e8-6c38-4c3c-9e76-65c481c94470:8
(anonymous) @ 7218a4e8-6c38-4c3c-9e76-65c481c94470:8
Module.receive @ 7218a4e8-6c38-4c3c-9e76-65c481c94470:8

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to emscripten-discuss+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVF4Q9gPR7ViVmKYfjQvwq66fyf0FyjN2XSUP%3Dvegw9A2w%40mail.gmail.com.

Reply via email to