xorvoid / forsp

Forsp: A Forth+Lisp Hybrid Lambda Calculus Language
MIT License
119 stars 14 forks source link

segfault on linux #1

Closed jakiki6 closed 1 month ago

jakiki6 commented 1 month ago

./forsp examples/tutorial.fp crashes with a segfault.

gdb gives me the following backtrace:

#0  0x00000000004017e5 in skip_white_and_comments () at forsp.c:214
#1  0x0000000000401b75 in read_list () at forsp.c:242
#2  0x0000000000401b45 in read_list () at forsp.c:249
#3  0x0000000000401b45 in read_list () at forsp.c:249
#4  0x0000000000401b45 in read_list () at forsp.c:249
#5  0x0000000000401b45 in read_list () at forsp.c:249
#6  0x0000000000401b45 in read_list () at forsp.c:249
#7  0x0000000000401b45 in read_list () at forsp.c:249
#8  0x0000000000401b45 in read_list () at forsp.c:249
#9  0x0000000000401b45 in read_list () at forsp.c:249
#10 0x0000000000401b45 in read_list () at forsp.c:249
#11 0x0000000000401b45 in read_list () at forsp.c:249
#12 0x0000000000401b45 in read_list () at forsp.c:249
#13 0x0000000000401b45 in read_list () at forsp.c:249
#14 0x0000000000401b45 in read_list () at forsp.c:249
#15 0x0000000000401b45 in read_list () at forsp.c:249
#16 0x0000000000401b45 in read_list () at forsp.c:249
#17 0x0000000000401b45 in read_list () at forsp.c:249
#18 0x0000000000401b45 in read_list () at forsp.c:249
#19 0x0000000000401b45 in read_list () at forsp.c:249
#20 0x0000000000401b45 in read_list () at forsp.c:249
#21 0x0000000000401b45 in read_list () at forsp.c:249
#22 0x0000000000401b45 in read_list () at forsp.c:249
#23 0x0000000000401b45 in read_list () at forsp.c:249
#24 0x0000000000401b45 in read_list () at forsp.c:249
#25 0x0000000000401b45 in read_list () at forsp.c:249
#26 0x0000000000401b45 in read_list () at forsp.c:249
#27 0x0000000000401b45 in read_list () at forsp.c:249
#28 0x0000000000401b45 in read_list () at forsp.c:249
#29 0x0000000000401b45 in read_list () at forsp.c:249
#30 0x0000000000401b45 in read_list () at forsp.c:249
...
#261683 0x0000000000401b45 in read_list () at forsp.c:249
#261684 0x0000000000401b1c in read () at forsp.c:329
#261685 0x0000000000401167 in main (argc=<optimized out>, argv=<optimized out>) at forsp.c:618

It looks like read_list calls read_list over and over again.

xorvoid commented 1 month ago

Thanks for reporting. I don't have a Linux machine at the moment, but I'll try to fix it when I get a chance.

xorvoid commented 1 month ago

Fixed. Clang (Mac) and GCC (Linux) use different function argument evaluation orders. It's unspecified in the standard. I generally code in a way to avoid these dark corners, but I was thinking too "functional" and it slipped my mind.

Fixed now. Enjoy!