Opened 11 years ago
Closed 11 years ago
#324 closed defect (fixed)
process-whostate sometimes returns a weird value
Reported by: | rme | Owned by: | 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 (3)
comment:1 Changed 11 years ago by gb
- Status changed from new to assigned
comment:2 Changed 11 years ago 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.
comment:3 Changed 11 years ago by rme
- Resolution set to fixed
- Status changed from assigned to closed
Fixed in r10461.
Note: See
TracTickets for help on using
tickets.
%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.