akovalenko/sbcl-win32-threads — Issue #15: Win SBCL 64-bit - can trigger "GC Invariant Lost" in web server
Author: supergrade
Created: 2011-12-20 11:41:38+00:00
State: open

SBCL 1.0.54.100.mswinmt.1150-42bbfd5 64-bit

Pull the "Wreck" project
https://github.com/supergrade/wreck

Edit wreck.lisp to point **prog-lisp-dir** to the base directory of the code:
(defvar **prog-lisp-dir** "c:/prog/wreck/")

Now, put the contents of wreck.lisp into the clipboard

Start TWO command-line instances of SBCL Win (threading) 64-bit, SERVER and CLIENT

On the SERVER:
1. Paste contents of wreck.lisp
2. Run (start-server)

This should have it listening on port 82

On the CLIENT
1. Paste contents of wreck.lisp
2. Run (start-stress-test) - it runs multiple threads that keep connecting to port 82 local
3. Run (show-progress) a few times. You should be seeing growing integers for both "Success" and "Errors". Errors are fine, you will see MUCH more errors than Successes; but that's okay (not the point of the exercise).

The client is now connecting/disconnecting from the server rapidly, with the server only accepting some of the connections. This is as-intended.

Within about 4 hours (for me) the SERVER will crash to LDB:
error:

* fatal error encountered in SBCL pid 10604(tid 10225392):
GC invariant lost, file "gencgc.c", line 3525