Thank you for trying out SWISH - here are the bugs

Torbjörn Lager <[email protected]>
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <CA+Y3JZjUZ13Q5_uunhOCsdqXWOG9z7V=reTyhUv2N=19cqJ6ag@mail.gmail.com>
Hi All,

Thanks to all of you who played with SWISH. The test release went well
I think, since only two bugs unknown to me has surfaced so far.
Norbert Fuchs found that when saving a program containing "\+" the
+-sign disappeared. Likely an encoding issue. Will fix it tomorrow or
on Monday.

A more serios bug is related to the ending of sessions. Three times
last night the server crashed with the following message:

[Thread 19] pl-thread.c:2899: destroy_message_queue: Assertion failed:
!queue->waiting && !queue->wait_for_drain
Stack trace labeled "crash":
  [0] swipl() [0x80eea93]
  [1] swipl() [0x80bcf0a]
  [2] swipl() [0x80bf0df]
  [3] swipl() [0x80c0b57]
  [4] swipl() [0x80c1d4b]
  [5] /lib/i686/cmov/libpthread.so.0(+0x5955) [0xb763b955]
  [6] /lib/i686/cmov/libc.so.6(clone+0x5e) [0xb75bbe7e]
Aborted

I *think* that this occured when a session timed out (after ten
minutes of inactivity) and was supposed to clean up a few resources.
The relevant code is here:

%   When a client session ends, the currently running goal (if any)
%   is aborted, the output queue is destroyed, and the client module
%   is emptied.

:- listen(http_session(end(SessionId, _Peer)), end_session(SessionId)).

end_session(SessionId) :-
    catch(thread_signal(SessionId, abort), _, true),
    atom_concat(SessionId, '.out', Output),
    message_queue_destroy(Output),
    forall(current_predicate(SessionId:PI),
        (   memberchk(PI, [read/1, write/1, writeln/1, nl/0])
        ->  true
        ;   abolish(SessionId:PI)
        )
    ).

The message queue is created when the session begins and as far as I
can see it should be possible to destroy it in this way. Maybe you can
spot the problem?

I will have to return to this on Monday. I will leave the server
running, but I guess it is likely to crash again and then I won't be
here to restart it.

Best,
Torbjörn

--
Torbjörn Lager
Professor of General and Computational Linguistics
Department of Philosophy, Linguistics and Theory of Science
University of Gothenburg
Box 200, SE-405 30 Gothenburg, Sweden
Phone: +46317864962
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.