https://github.com/emscripten-core/emscripten/issues/20947

чт, 7 дек. 2023 г. в 23:26, Александр Гурьянов <caiiiy...@gmail.com>:

> 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%3DVFTXL%3DJfxrEgVt2n8SVKY9UD6g88eOmQyPyYNy-kDtiAg%40mail.gmail.com.

Reply via email to