Hi Erik,
First, one comment: tasks are not "true" (kernel) threads. Currently a julia
process is single-threaded. Tasks are better considered as a form of
cooperative multitasking.
Yes, I've also found that I/O causes task switching. I don't personally know a
great way around this. One option would presumably be to have some form of
message queue; I am pretty sure that push!ing a new message on it---as long as
you don't need to touch I/O to create the message---would not cause a switch.
You can also use time() and other markers to indicate the status of control
flow.
I haven't been reading things carefully enough to know whether there's any
history behind this, but if you haven't said so already...what does gdb (or
equivalent) say about the segfault?
--Tim