Ticket #324 (closed defect: fixed)

Opened 5 months ago

Last modified 1 month ago

process-whostate sometimes returns a weird value

Reported by: rme Assigned to: gb
Priority: minor Milestone: IA-32 port
Component: Runtime (threads, GC) Version:
Keywords: Cc:

Description

Sometimes, something like this happens.

Welcome to Clozure Common Lisp Version 1.2-r10446:10448M-trunk  (DarwinX8632)!
? (process-run-function "do nothing" (lambda ()))
#<PROCESS do nothing(2) [#<Unprintable IMMEDIATE : #xF3>] #x88CB886>

#xf3 is x8632::subtag-no-thread-local-binding.

One expect to see this:

#<PROCESS do nothing(2) [Reset] #x88CB886>

Change History

08/12/08 18:09:49 changed by gb

  • status changed from new to assigned.

%TCR-BINDING-LOCATION is supposed to check for that (i.e., if the contents of the fixnum representing a native-word-aligned address are target::subtag-no-thread-local-binding) and return NIL rather than that fixnum. The tcr's thread is supposed to be suspended while we're looking at it, so it would seem that either the check for the no-thread-local-binding-marker is wrong or (b) there are memory-synchronization issues involved here.

I hope that it's (a), or (c) something else entirely.

08/13/08 02:08:26 changed by gb

Never mind; we suspend the tcr and check to see if it has a thread-local binding for *WHOSTATE*, conclude that it does, then resume the tcr and allow its state to change.

D'oh.

12/06/08 04:03:27 changed by rme

  • status changed from assigned to closed.
  • resolution set to fixed.

Fixed in r10461.