cosmos72 / stmx

High performance Transactional Memory for Common Lisp
http://stmx.org/
241 stars 14 forks source link

regression on CCL in quicklisp 2013-07-22 [CMUCL has regression too] #3

Closed avodonosov closed 11 years ago

avodonosov commented 11 years ago

Hi.

Since stmx is in quicklisp it is being tested by cl-test-grid on various lisp and OSes.

Here is the library test results page: http://common-lisp.net/project/cl-test-grid/library/stmx.html. The tests status links like "(LOAD stmx FAIL)" or "(LOAD stmx OK)" refer to the test process output stored in file.

As you can see, in quicklisp 2013-07-22 it started to fail loading on CCL due to error:

No MAKE-LOAD-FORM method is defined for #S(STMX.LANG:ATOMIC-COUNTER :VERSION 0 :LOCK #<RECURSIVE-LOCK "ATOMIC-COUNTER" [ptr @ #x1AA1880] #x30200134A2FD>)
cosmos72 commented 11 years ago

Hello,

thanks for the report.

My fault, I probably skipped some tests on the current STABLE branch. Anyway I have identified the probable cause for this problem.

The reason is the new macro DEFINE-CONSTANT-EVAL-ONCE, which uses a very aggressive optimization: it evaluates its argument (usually an object creation form) only once during :COMPILE-TOPLEVEL, which typically causes the object to be stored in .FASL to be loaded later during :LOAD-TOPLEVEL.

It appears that CCL is unable to load at least the fragment #<RECURSIVE-LOCK ...> - not suprising, since it's by definition an unreadable object.

There are at least two possible solutions: 1) do not use DEFINE-CONSTANT-EVAL-ONCE on CCL or 2) implement MAKE-LOAD-FORM for the structure-object STMX.LANG:ATOMIC-COUNTER

I will test if 2) solves the problem, otherwise I will fall back on 1)

cosmos72 commented 11 years ago

It seems Quicklisp pulled master branch instead of stable (see https://github.com/quicklisp/quicklisp-projects/issues/540), which may explain why it was not thoroughly tested

cosmos72 commented 11 years ago

commit 6c51c840fb27fb62452dc5a048332557bf57dfca fixes this regression. With it, STMX successfully loads on all supported compilers.

Anyway, on CCL and CMUCL test suite still fails (enters infinite loop). Working on it.

cosmos72 commented 11 years ago

The latest STMX version (1.3.3) published by Quicklisp in August is (correctly) the stable branch. Testing on CCL passed - see http://common-lisp.net/project/cl-test-grid/library/stmx.html. On CMUCL some issues seem to persist - I will investigate, even the next Quicklisp update should pull STMX version 1.9.0

avodonosov commented 11 years ago

Yep. It also has some problems on ECL, but I think it's better to create a separate issue for that