fcb-threads.impure test fails on x86 since SBCL 2.0.11

Bug #1907252 reported by Sébastien Villemot
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
SBCL
New
Undecided
Unassigned

Bug Description

Hi,

The fcb-threads.impure test fails on x86 since SBCL 2.0.11.

This has been observed in the context of the official Debian package for i386 (aka x86). Here is the full build log:
https://buildd.debian.org/status/fetch.php?pkg=sbcl&arch=i386&ver=2%3A2.0.11-1&stamp=1607394324&raw=0

Note that the build has been tried four times, so this does not seem to be a transient issue (or at least it is quite frequent).

The problem was not present in SBCL 2.0.10.

As a last resort solution, I might disable the test on x86, but that would obviously only be hiding the real issue.

Thanks,

Revision history for this message
Sébastien Villemot (sebastien-villemot) wrote :
Revision history for this message
Stas Boukarev (stassats) wrote :

It's just a coincidence it's failing more on 2.0.11 than on 2.0.10

Revision history for this message
Sébastien Villemot (sebastien-villemot) wrote :

So you mean this is a known issue? Does that imply that the best course of action from a Debian perspective is simply to disable the test?

Revision history for this message
Stas Boukarev (stassats) wrote :

It's known to occur. Yeah, you can disable it locally.

Revision history for this message
Douglas Katzman (dougk) wrote :

A fuller explanation is that "octet sequence cannot be decoded" stems from misuse of our foreign API internals via the normal publicly accessible API. It attempts to perform UTF-8 decoding on a string that got moved and the old bytes contain junk.
Why only x86 croaks has so far has been elusive. In theory, it should be a problem for all architectures.
So - note to self - this seems a moderately important issue to solve.

Revision history for this message
Sébastien Villemot (sebastien-villemot) wrote :

Actually I just noticed that this test also failed once on arm64 with SBCL 2.0.10:
https://buildd.debian.org/status/fetch.php?pkg=sbcl&arch=arm64&ver=2%3A2.0.10-1&stamp=1604935633&raw=0

So I’m going to disable it on all archs in the Debian package.

Thanks for your feedback.

Revision history for this message
Stas Boukarev (stassats) wrote :

> A fuller explanation is that "octet sequence cannot be decoded" stems from misuse of our foreign API internals via the normal publicly accessible API.

I just pushed a change to the callback wrapper to avoid double conversion. But I guess there's still a problem with pinning by with-alien.

Revision history for this message
Stas Boukarev (stassats) wrote :

(defun foo (l)
  (declare (optimize speed (safety 0)))
  (with-alien ((z (c-string :external-format :utf-8) (truly-the string (car l))))
    (assert (equal z (car l)))))

(loop repeat 3
      do
      (sb-thread:make-thread (lambda ()
                               (declare (optimize speed (safety 0)))
                               (let ((z (list (copy-seq "teststring"))))
                                 (loop (foo z))))))
(loop (sb-ext:gc)
      (sleep 0.0001))

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.