Auditing Guile reveals it is using asserts and lacks NDEBUG by default: $ grep -IR assert | grep '\.c' ... libguile/struct.c:#include <assert.h> libguile/struct.c: assert (len % 2 == 0); libguile/weak-set.c:#include <assert.h> libguile/weak-set.c: assert (set->n_items < size); libguile/vports.c:#include <assert.h> libguile/vports.c: assert (len > 0 && len <= ENCODE_BUF_SIZE); libguile/numbers.c:#include <assert.h> libguile/numbers.c: assert (0); libguile/numbers.c: assert (0); libguile/numbers.c: assert (0); libguile/numbers.c: assert (0);
Production software needs to run with NDEBUG to remove the debugging and diagnostics. If assert() fires then abort() is called, which results in a core dump. On some platforms, like Apple, Ubuntu and Windows, the program's data gets sent to an external error reporting service. Effectively the platform egresses all the program's sensitive data. Please don't use assert's in production software.