I was successful compiling sbcl latest on mingw64. Below are some notes differences that I noted between the compilation log on mingw64 (attached here for you to review) and the compilation log on mwing32. I don't know if they are relevant to the problem but I'll mention them anyway. - mingw64 compiles -g -O5, mingw32 compiled with -g -O3 - mingw32 compiles with -D_WIN32_WINNT=0x600 vs mingw64 compiles with -DWINVER=0x0501. Intuitively it feels it should be the opposite? - mingw32 compiles with -mpreferred-stack-boundary=2, this option is not in mingw64. What is the purpose of this option? - mingw64 compiles with -Wno-unused-function -Wno-unused-parameter -Wno-cast-function-type - Compiling cross-float.fasl-tmp in win32 generated the following message (there were other occurrences that didn't occur in mingw64) //CROSS-FLOAT DISCREPANCY! // CACHE: (COMMON-LISP:EXPT #.(MAKE-DOUBLE-FLOAT #x40240000 #x0) -309) -> (#.(MAKE-DOUBLE-FLOAT #xB815 #x7268FDAF)) // HOST : (9.999928873692877d-310) - mingw32 warns the following in gc-common.c, gc-common.c:1851:16: warning: 'can_invoke_post_gc' defined but not used [-Wunused-function] 1851 | static boolean can_invoke_post_gc(__attribute__((unused)) struct thread* th, in interrupt.c, interrupt.c:1260:1: warning: 'run_deferred_handler' defined but not used [-Wunused-function] 1260 | run_deferred_handler(struct interrupt_data *data, os_context_t *context) | ^~~~~~~~~~~~~~~~~~~~ interrupt.c:710:1: warning: 'check_interrupt_context_or_lose' defined but not used [-Wunused-function] 710 | check_interrupt_context_or_lose(os_context_t *context) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ interrupt.c:167:13: warning: 'sigmask_logior' defined but not used [-Wunused-function] 167 | static void sigmask_logior(sigset_t *dest, const sigset_t *source) | ^~~~~~~~~~~~~~ in monitor.c:507 monitor.c:507:1: warning: 'sigint_handler' defined but not used [-Wunused-function] 507 | sigint_handler(int __attribute__((unused)) signal, | ^~~~~~~~~~~~~~ in win32-os.c At top level: win32-os.c:729:15: warning: 'qpcMultiplier' defined but not used [-Wunused-variable] 729 | static double qpcMultiplier; | ^~~~~~~~~~~~~ win32-os.c:728:22: warning: 'lisp_init_time' defined but not used [-Wunused-variable] 728 | static LARGE_INTEGER lisp_init_time; | ^~~~~~~~~~~~~~ - in fd-stream.lisp ; file: D:/Downloads/sbcl_latest/sbcl/src/code/fd-stream.lisp ; in: DEFUN SB-IMPL::!MAKE-COLD-STDERR-STREAM ; (SB-WIN32::GET-STD-HANDLE-OR-NULL SB-WIN32::+STD-ERROR-HANDLE+) ; ; caught WARNING: ; undefined variable: SB-WIN32::+STD-ERROR-HANDLE+ ; ; compilation unit finished ; Undefined variable: ; SB-WIN32::+STD-ERROR-HANDLE+ ; caught 1 WARNING condition ; printed 12 notes Likely suspicious calls: 1 SB-EXT:GET-TIME-OF-DAY Possibly suspicious calls: 194 SB-KERNEL:%COERCE-CALLABLE-TO-FUN 181 SB-KERNEL:SPECIFIER-TYPE 162 SB-KERNEL:%DOUBLE-FLOAT 94 SB-KERNEL:%SINGLE-FLOAT 33 SB-KERNEL:%UNARY-TRUNCATE/DOUBLE-FLOAT 24 (SETF SB-INT:INFO) 15 SB-KERNEL:%UNARY-TRUNCATE/SINGLE-FLOAT 9 SB-INT:INFO 8 SB-KERNEL:VALUES-SPECIFIER-TYPE 5 SB-C::MASK-SIGNED-FIELD 5 SB-KERNEL:%UNARY-ROUND 1 SB-VM::ASH-LEFT-MODFX 1 SB-SYS:FOREIGN-SYMBOL-SAP 1 SB-KERNEL:DSD-INDEX - mingw64 in safepoint.c, complains about fall through cases that mingw32 doesn't complain safepoint.c: In function 'gc_stop_the_world': safepoint.c:853:13: warning: this statement may fall through [-Wimplicit-fallthrough=] 853 | gc_advance(GC_QUIET,gc_state.phase); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ safepoint.c:854:9: note: here 854 | case GC_FLIGHT: | ^~~~ safepoint.c:857:16: warning: this statement may fall through [-Wimplicit-fallthrough=] 857 | if ((gc_state.phase == GC_MESSAGE) | ^ safepoint.c:868:9: note: here 868 | case GC_QUIET: | ^~~~ Let me know if there is anything I can do to help.