Created attachment 224826 [details] core % 3Dc 3Dc version 0.8.1, Copyright (C) 1995,1996 Paul Hicks 3Dc comes with ABSOLUTELY NO WARRANTY: see the GPL file for details This is free software: you are welcome to redistribute it under certain conditions (see the GPL file). Abort (core dumped) % date ; uname -v Tue 11 May 2021 01:46:51 BST FreeBSD 14.0-CURRENT #94 main-n246499-097e8701c9f: Thu May 6 07:26:23 BST 2021 root@mowa219-gjp4-8570p:/usr/obj/usr/src/amd64.amd64/sys/GENERIC-NODEBUG %
After building games/3dc with debugging #env WITH_DEBUG=yes STRIP=install portmaster -m 'DEBUG_FLAGS=-g' games/3dc and than starting 3Dc in lldb gives me: lldb /usr/local/bin/3Dc (lldb) target create "/usr/local/bin/3Dc" Current executable set to '/usr/local/bin/3Dc' (x86_64). (lldb) r Process 290 launching Process 290 launched: '/usr/local/bin/3Dc' (x86_64) 3Dc version 0.8.1, Copyright (C) 1995,1996 Paul Hicks 3Dc comes with ABSOLUTELY NO WARRANTY: see the GPL file for details This is free software: you are welcome to redistribute it under certain conditions (see the GPL file). Process 290 stopped * thread #1, name = '3Dc', stop reason = signal SIGABRT frame #0: 0x00000008005f37aa libc.so.7`__sys_kill + 10 libc.so.7`__sys_kill: -> 0x8005f37aa <+10>: jb 0x8005f34c8 0x8005f37b0 <+16>: retq 0x8005f37b1: int3 0x8005f37b2: int3 (lldb) bt * thread #1, name = '3Dc', stop reason = signal SIGABRT * frame #0: 0x00000008005f37aa libc.so.7`__sys_kill + 10 frame #1: 0x00000008005f6a60 libc.so.7`___lldb_unnamed_symbol845$$libc.so.7 + 144 frame #2: 0x00000008005f69d0 libc.so.7`__stack_chk_fail + 16 frame #3: 0x000000000020d29b 3Dc`InitMainWindow(gfx=0x0000000000215c10) at xif.c:0 frame #4: 0x000000000020ca26 3Dc`Init3DcGFX(argc=1, argv=0x00007fffffffd630) at xif.c:100:7 frame #5: 0x00000000002065e4 3Dc`main(argc=1, argv=0x00007fffffffd630) at main.c:55:7 frame #6: 0x0000000000206040 3Dc`_start + 256 From here on, someone with more knowledge will have to take over ;) HTH, Rainer
Created attachment 224864 [details] Proposed patch It is smashing the stack in one of the two XtVaGetValues calls. Would you try the attached patch? It works for me in amd64. I am no expert in the X11 API. I think the software is assuming sizeof(int) = 32 always and the XtVaGetValues is returning something bigger in the in/out bg parameter (64 bits)
Hi Fernando, For me on 14.0-CURRENT amd64 your patch works like expected :)
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=339d443d7b97dcef2ad415ff9cf743685ebea304 commit 339d443d7b97dcef2ad415ff9cf743685ebea304 Author: Fernando ApesteguÃa <fernape@FreeBSD.org> AuthorDate: 2021-05-12 09:01:40 +0000 Commit: Fernando ApesteguÃa <fernape@FreeBSD.org> CommitDate: 2021-05-13 12:51:00 +0000 games/3dc: Fix crash on boot The call to XtVaGetValues returns a value that overwrites the `bc` variable and smashes the stack. Use a long instead. PR: 255765 Reported by: grahamperrin@gmail.com Tested by: rhurling@ MFH: 2021Q2 games/3dc/Makefile | 2 +- games/3dc/files/patch-xif.c (new) | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-)
A commit in branch 2021Q2 references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=2c822c361c643b4ff4d741f6d4d293a54ab15eb3 commit 2c822c361c643b4ff4d741f6d4d293a54ab15eb3 Author: Fernando ApesteguÃa <fernape@FreeBSD.org> AuthorDate: 2021-05-12 09:01:40 +0000 Commit: Fernando ApesteguÃa <fernape@FreeBSD.org> CommitDate: 2021-05-13 12:56:13 +0000 games/3dc: Fix crash on boot The call to XtVaGetValues returns a value that overwrites the `bc` variable and smashes the stack. Use a long instead. PR: 255765 Reported by: grahamperrin@gmail.com Tested by: rhurling@ MFH: 2021Q2 (cherry picked from commit 339d443d7b97dcef2ad415ff9cf743685ebea304) games/3dc/Makefile | 2 +- games/3dc/files/patch-xif.c (new) | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-)
Committed, Thank you both!