From: Bruno H. <br...@cl...> - 2017-05-27 19:22:46
|
> 1) In build-porting64-gcc-portability > > This is a build with > > $ grep '\(SPVW_\|GENERA\)' lispbibl.h > #define NO_GENERATIONAL_GC 1 > #define SPVW_MIXED > #define SPVW_PAGES > > Here I get a crash in "make check-tests" > > (TEST-FLOAT-IO-CONSISTENCY :FROM 1.0s-30 :BY 10 :TO 1.0s30 :REPEAT 100) > Makefile:25: recipe for target 'tests' failed > make[1]: *** [tests] Segmentation fault (core dumped) I've fixed this one now. The recipe to reproduce it was: - Use the build-porting64-gcc-debug_gcsafety build, with modified CFLAGS: Originally CFLAGS = ... -ggdb -O0 -DDEBUG_OS_ERROR -DDEBUG_SPVW -DDEBUG_BYTECODE -DSAFETY=3 -DDEBUG_GCSAFETY -DENABLE_UNICODE -DDYNAMIC_FFI Add to CFLAGS for MIXED_BLOCKS or MIXED_PAGES memory model: -DNO_ADDRESS_SPACE_ASSUMPTIONS - Run ./clisp and enter: (defun test-float-io-consistency (&key from to by repeat) (loop :for max = from :then (* by max) :while (< max to) :nconc (loop :repeat repeat :for x = (random max) :for y = (if (zerop (random 2)) x (- x)) :unless (= y (read-from-string (prin1-to-string y))) :collect (cons y (multiple-value-list (integer-decode-float y)))))) (compile *) (test-float-io-consistency :from 1s-30 :by 10 :to 1s30 :repeat 1000) It crashes in the GC because make_machine_code is being invoked on a function pointer that does not have the necessary alignment. I've now - added a check to make_machine_code (if SAFETY >= 2), - eliminated the wrong invocations of make_machine_code. Bruno |