larcenists / larceny

Larceny Scheme implementation
Other
202 stars 32 forks source link

macOS Sierra (10.12.2) / Xcode 8.2.1 library compilation errors with Larceny 0.99 #784

Closed christoff-buerger closed 7 years ago

christoff-buerger commented 7 years ago

After updating to macOS Sierra (Version 10.12.2) with Xcode 8.2.1 it is impossible to compile R6RS libraries or files. The error message of Larceny 0.99 is

Larceny Panic: Sys/stats.c;677: Assertion failed.

I run into this issue with my RACR Scheme library. You can test by executing

./install-libraries.bash -s larceny

I tried the compile-stale script as well as the compile-stale-libraries and compile-library functions of (larceny compiler) with all kind of compiler switches (slow, fast-safe, fast-unsafe, standard, default and no switch).

Unfortunately, I cannot try the most recent GitHub version as I have no working Larceny compiler anymore (bootstrap for the win)! Larceny itself still runs; "just" compilation of R6RS programs fails.

WillClinger commented 7 years ago

Thank you for the detailed bug report.

I tried to update my MacBook to Sierra a while ago, but the update failed. Now it's urgent.

christoff-buerger commented 7 years ago

I tried a bit more. The bug looks kind of random. About 1 out of 20 times a library compiles; the other 19 times is fails with Larceny Panic: Sys/stats.c;677: Assertion failed.

I am testing on a MacBook Air Mid 2011.

WillClinger commented 7 years ago

Installing Sierra took half a day.

It looks as though the assertion fails following the first garbage collection in generation 1, when statistics are recorded following the collection.

Sufficiently small and short-running programs can be run by specifying -size0 1000M on the command line, but that isn't enough for a system build.

I'm going to use an older OS to build a version of Larceny that simply prints a message instead of failing the assertion, and see what I can learn from that.

WillClinger commented 7 years ago

Fixed by changeset 2adf75071649c5e840fe47f087d1c006bfe53f25

Evidently macOS Sierra is no longer zeroing out the memory segments allocated using malloc or similar, which exposed a latent bug in the statistics-gathering code of v0.99.

A prebuilt binary for macOS Sierra should appear on Larceny's nightly build page by tomorrow morning, and I'll update Larceny's main download page tomorrow as well.

christoff-buerger commented 7 years ago

Thanks a lot! I tested it and it works perfectly; all issues are fixed.