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.

Reply via email to