Comment 7 for bug 332002

Revision history for this message
Robert Brown (robert-brown) wrote : Re: [Bug 332002] Re: SEMAPHORE-MULTIPLE-WAITERS failure

I just noticed your email. I'll give it a try later tonight if I have the time.

bob

==========

On Mon, Feb 23, 2009 at 10:20 AM, Gábor Melis <email address hidden> wrote:
> It consistently passes for me.
>
> However, I found a few related issues and made fixes available on the
> waitqueue branch [2] of my git tree [1].
>
> The test that's added in the "less pessimal waitqueues" commit displays
> rather erratic behaviour on my system: it finishes in 2s or it hangs for
> a few seconds here and there and then continues. The strange thing is
> that it can affect the system to the point where X becomes unresponsive,
> and even switching between character based virtual terminals is
> impossible. Then it unwedges and life goes on. Is this similar behaviour
> to what you observe?
>
> I suspect what I see is kernel issue, mine is 2.6.26. Reading [3] made
> me add the FUTEX_WAIT_PRIVATE, FUTEX_WAKE_PRIVATE flags to the relevant
> calls but they didn't help much, save for measurably reducing contention
> between mmap and futex.
>
> Could you please test this branch? The last commit (the futex private
> one) may not work on your kernel, use the one before it.
>
> [1] http://quotenil.com/git/sbcl.git
> [2] http://quotenil.com/git/?p=sbcl.git;a=shortlog;h=waitqueue
> [3] http://blogs.sun.com/roland/entry/real_time_java_and_futexes
>
> --
> SEMAPHORE-MULTIPLE-WAITERS failure
> https://bugs.launchpad.net/bugs/332002
> You received this bug notification because you are a direct subscriber
> of the bug.
>
> Status in Steel Bank Common Lisp: New
>
> Bug description:
> Reported by Robert Brown:
>
> I just compiled SBCL 1.0.25.55 and ran the tests. I'm getting a failure of
> test SEMAPHORE-MULTIPLE-WAITERS. My system is a 2 CPU dual core Opteron
> running Ubuntu Linux in 64-bit mode. I compiled the same SBCL version on my
> netbook, 32-bit Atom running Ubuntu 8.10 and same test passes.
>
> bob
>
> ====================
>
> paradicsom [51] sh ./run-tests.sh threads.pure.lisp
> /running tests on
> '/usr/local/google/local-brown/software/source-trees/sbcl/tests/../src/runtime/sbcl
> --core
> /usr/local/google/local-brown/software/source-trees/sbcl/tests/../output/sbcl.core
> --noinform --no-sysinit --no-userinit --noprint --disable-debugger'
> ; loading system definition from
> ;
> /usr/local/google/local-brown/software/source-trees/sbcl/contrib/sb-posix/sb-posix.asd
> ; into #<PACKAGE "ASDF0">
> ; loading system definition from
> ;
> /usr/local/google/local-brown/software/source-trees/sbcl/contrib/sb-grovel/sb-grovel.asd
> ; into #<PACKAGE "ASDF1">
> ; registering #<SYSTEM SB-GROVEL {1002FB15A1}> as SB-GROVEL
> ; registering #<SYSTEM SB-POSIX {1002F0A581}> as SB-POSIX
> ; registering #<SYSTEM SB-POSIX-TESTS {10031458F1}> as SB-POSIX-TESTS
> STYLE-WARNING: Couldn't grovel for SIGEMT (unknown to the C compiler).
> STYLE-WARNING: Couldn't grovel for S_IFWHT (unknown to the C compiler).
> STYLE-WARNING: Couldn't grovel for O_NOFOLLOW (unknown to the C compiler).
> STYLE-WARNING: Couldn't grovel for O_DIRECTORY (unknown to the C compiler).
> STYLE-WARNING: Couldn't grovel for O_DIRECT (unknown to the C compiler).
> STYLE-WARNING: Couldn't grovel for O_LARGEFILE (unknown to the C compiler).
> // Running pure tests (#<FUNCTION RUN-TESTS::LOAD-TEST>)
> // Running
> /usr/local/google/local-brown/software/source-trees/sbcl/tests/threads.pure.lisp
> ::: Running MUTEX-OWNER
> ::: Success MUTEX-OWNER
> ::: Running SPINLOCK-OWNER
> ::: Success SPINLOCK-OWNER
> ::: Running WITHOUT-INTERRUPTS+CONDITION-WAIT
> ::: Success WITHOUT-INTERRUPTS+CONDITION-WAIT
> ::: Running WITHOUT-INTERRUPTS+GET-MUTEX
> ::: Success WITHOUT-INTERRUPTS+GET-MUTEX
> ::: Running PARALLEL-FIND-CLASS
> ::: Success PARALLEL-FIND-CLASS
> ; in: LAMBDA NIL
> ; (LET ((THREAD-TEST::W THREAD-TEST::W))
> ; (SB-THREAD:MAKE-THREAD
> ; (LAMBDA ()
> ; (LET (#)
> ; (DOTIMES # #)))
> ; :NAME "writer"))
> ;
> ; caught STYLE-WARNING:
> ; The variable W is defined but never used.
>
> ; (LET ((THREAD-TEST::R THREAD-TEST::R))
> ; (SB-THREAD:MAKE-THREAD
> ; (LAMBDA ()
> ; (LET (#)
> ; (DOTIMES # #)))
> ; :NAME "reader"))
> ;
> ; caught STYLE-WARNING:
> ; The variable R is defined but never used.
> ;
> ; compilation unit finished
> ; caught 2 STYLE-WARNING conditions
> ::: Running :SEMAPHORE-MULTIPLE-WAITERS
> ::: UNEXPECTED-FAILURE :SEMAPHORE-MULTIPLE-WAITERS
> // Running pure tests (#<FUNCTION RUN-TESTS::CLOAD-TEST>)
> // Running impure tests (#<FUNCTION RUN-TESTS::LOAD-TEST>)
> // Running impure tests (#<FUNCTION RUN-TESTS::CLOAD-TEST>)
> // Running impure tests (#<FUNCTION RUN-TESTS::SH-TEST>)
>
> Finished running tests.
> Status:
> Failure: threads.pure.lisp / SEMAPHORE-MULTIPLE-WAITERS
> test failed, expected 104 return code, got 1
>