From: Neil Jerram <neil@ossau.uklinux.net>
To: Tristan Colgate <tcolgate@gmail.com>
Cc: guile-user@gnu.org, Guile Development <guile-devel@gnu.org>
Subject: Re: racing srfi-18 threads
Date: Mon, 16 Nov 2009 22:16:31 +0000 [thread overview]
Message-ID: <87skceglog.fsf@ossau.uklinux.net> (raw)
In-Reply-To: <87bpjcy4bc.fsf@ossau.uklinux.net> (Neil Jerram's message of "Sun, 08 Nov 2009 23:39:19 +0000")
Neil Jerram <neil@ossau.uklinux.net> writes:
> Tristan Colgate <tcolgate@gmail.com> writes:
>
>> A similar, though much simpler, test case exhibits the same problem.
>> I'll raise a bug. report and
>> include a log of the issue.
>
> Hi Tristan,
>
> Thanks for reporting this. FWIW I've checked that it still happens
> (exactly as you've described) with the current Git HEAD. Not much clue
> yet about the underlying problem or fix, but I'll keep looking.
What happens is that each of the spawned threads throws an exception
before it gets going. If I run test-broken in the (srfi srfi-18)
module, with the following code added at the end:
(write threads)
(newline)
(for-each (lambda (t)
(write (thread->exception t))
(newline))
threads)
(for-each thread-join! threads)
I see:
===============
build thread
build thread
build thread
build thread
build thread
build thread
(#<thread 3081010064 (8d308a0)> #<thread 3064224656 (8d305c0)> #<thread 3064224656 (8d30450)> #<thread 3064224656 (8d302e0)> #<thread 3064224656 (8d30170)> #<thread 3064224656 (8d30000)>)
((uncaught-exception) wrong-type-arg "with-exception-handler" "Wrong type argument: ~S" (#<program 8e13ac0>) ())
((uncaught-exception) wrong-type-arg "with-exception-handler" "Wrong type argument: ~S" (#<program 8e13a00>) ())
((uncaught-exception) wrong-type-arg "with-exception-handler" "Wrong type argument: ~S" (#<program 8e13940>) ())
((uncaught-exception) wrong-type-arg "with-exception-handler" "Wrong type argument: ~S" (#<program 8e13890>) ())
((uncaught-exception) wrong-type-arg "with-exception-handler" "Wrong type argument: ~S" (#<program 8e13800>) ())
((uncaught-exception) wrong-type-arg "with-exception-handler" "Wrong type argument: ~S" (#<program 8e13740>) ())
===============
This is apparently because of srfi-18.scm's `with-exception-handler'
including
(check-arg-type thunk? thunk "with-exception-handler")
It seems that when run under the VM, (thunk? thunk) => #f.
scm_thunk_p depends on scm_i_program_arity, which depends on
scm_program_arities, and adding this -
(write ((@ (system vm program) program-arities) thunk))
(newline)
(write (procedure-property thunk 'arity))
(newline)
- into srfi-18's make-thread code, I get
#f
#f
every time.
So I think this is a good point to report and ask if this makes sense.
Andy / Ludo, can it be correct for (program-arities PROGRAM) to be #f ?
If not, any idea what is the root cause of this?
Another question here is why the thread-join! doesn't cause the uncaught
thread exceptions to be raised on the main thread. I'll look further
into that.
Thanks,
Neil
next parent reply other threads:[~2009-11-16 22:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <2e6d10880911060129s538fab2cv84805475450f33d0@mail.gmail.com>
[not found] ` <2e6d10880911060652g56092de3g649c540e54102c05@mail.gmail.com>
[not found] ` <87bpjcy4bc.fsf@ossau.uklinux.net>
2009-11-16 22:16 ` Neil Jerram [this message]
2009-11-17 19:58 ` racing srfi-18 threads Andy Wingo
2009-11-20 0:00 ` Neil Jerram
2009-12-02 21:46 ` Neil Jerram
2009-12-03 22:52 ` Neil Jerram
2010-07-20 21:51 ` Andy Wingo
2009-12-10 19:53 ` Andy Wingo
2009-12-12 17:00 ` Debugging infrastructure (was Re: racing srfi-18 threads) Neil Jerram
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87skceglog.fsf@ossau.uklinux.net \
--to=neil@ossau.uklinux.net \
--cc=guile-devel@gnu.org \
--cc=guile-user@gnu.org \
--cc=tcolgate@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).