Interesting problems to resolve towards the 3.3 release
Holger Freyther <[email protected]> Sat, 2 Dec 2023 18:23:55 +0800
| Newsgroups | gmane.comp.lang.smalltalk.gnu.general |
|---|---|
| Message-ID | <[email protected]> |
Hi folks,
I could use a hand with some interesting problems with some of the =
basics of our VM and its support code.
1.) Upgrade of (parts) of the embedded gnulib.
lib-src is part gnulib and part custom. We should update the gnulib =
parts to address compiler warnings to work better with the current =
toolchain.
gnulib: https://www.gnu.org/software/gnulib/
2.) Sporadic crashes when resuming an image
When running the testsuite (docker container on arm64) I do see sporadic =
failures when resuming the image. Somehow we _sometimes_ trigger a =
global GC when loading the _same_ image.
#0 0x0000ffffa21c42ac in raise () from /lib/aarch64-linux-gnu/libc.so.6
#1 0x0000ffffa21b0ea0 in abort () from /lib/aarch64-linux-gnu/libc.so.6
#2 0x0000ffffa23fe2e0 in oldspace_sigsegv_handler (fault_address=3D0x0, =
serious=3D<optimized out>) at oop.c:961
#3 0x0000ffffa2179ea8 in ?? () from =
/usr/lib/aarch64-linux-gnu/libsigsegv.so.2
#4 <signal handler called>
#5 empty_context_stack () at interp.c:746
#6 0x0000ffffa2442d40 in _gst_fixup_object_pointers () at interp.c:2461
#7 0x0000ffffa24001b0 in _gst_global_gc (next_allocation=3D4096) at =
oop.c:1101
#8 0x0000ffffa240078c in oldspace_nomemory (h=3D<optimized out>, =
sz=3D<optimized out>) at oop.c:919
#9 0x0000ffffa2421268 in _gst_mem_alloc (h=3D0x2968f20, =
sz=3Dsz@entry=3D2080) at alloc.c:264
#10 0x0000ffffa2410e64 in load_normal_oops (imageFd=3D3) at save.c:644
#11 load_snapshot (imageFd=3DimageFd@entry=3D3) at save.c:511
#12 0x0000ffffa2411528 in _gst_load_from_file (fileName=3D<optimized =
out>) at save.c:473
#13 0x0000ffffa23e4938 in _gst_initialize (kernel_dir=3D0x29555f0 =
"/smalltalk/smalltalk/tests/kernel",=20
image_file=3D<optimized out>, flags=3D0) at files.c:498
#14 0x0000ffffa23e3f44 in gst_initialize (kernel_dir=3D<optimized out>, =
image_file=3D<optimized out>, flags=3D<optimized out>) at gstpub.c:156
#15 0x00000000004012d8 in main (argc=3D<optimized out>, argv=3D<optimized =
out>) at main.c:386
3.) bison, genbc and modern linkers
When linking genbc we start to see a linker error about multiple =
definitions with ld.gold. This is because we have two grammars and try =
to link them into a single binary. bison allows us to prefix these =
symbols but then the tooling needs to handle this.
/usr/bin/ld: genbc-impl.o:/smalltalk/libgst/genbc-impl.c:927: multiple =
definition of `yynerrs'; =
genbc-decl.o:/smalltalk/libgst/genbc-decl.c:1030: first defined here
/usr/bin/ld: genbc-impl.o:/smalltalk/libgst/genbc-impl.c:925: multiple =
definition of `yylval'; =
genbc-decl.o:/smalltalk/libgst/genbc-decl.c:1028: first defined here
/usr/bin/ld: genbc-impl.o:/smalltalk/libgst/genbc-impl.c:922: multiple =
definition of `yychar'; =
genbc-decl.o:/smalltalk/libgst/genbc-decl.c:1025: first defined here
4.) Support for darwin on Apple silicon
Apple does not support executable stacks on the M1 and when linking =
without it, gst does start crashing early. This problem is interesting =
but not a release blocker.