[M3devel] [M3commit] CVS Update: cm3
Tony Hosking
hosking at cs.purdue.edu
Sat Sep 12 14:22:51 CEST 2009
On 12 Sep 2009, at 05:26, Jay K wrote:
> Tony,
> - You didn't like how I factored InitMutex and InitCondition via
> InitMutexHelper?
Please keep them separate in case implementation of Condition and
Mutex diverge. I've been playing with these some lately and may yet
make further changes. Having shared code makes it a real pain to
change one and not the other.
> - XWait doesn't have to initialize the mutex, because it must already
> be locked, and therefore initialized? Or is that a "safety hole"?
Just in case a client invokes Wait without holding the mutex. Perhaps
better to check and die. I will adjust.
> Unsafe module trusting safe caller to have adhered to its interface
> but it might not have to so unsafe code has to do extra work to
> preserve safety?
> Reasonable to ASSERT instead? Or are asserts allowed to be removed
ASSERTs can be removed by compiling without assertions for performance.
> and can't be used to guarantee safety?
Right.
> (I put them in C code used by Modula-3, but I can perhaps make
> the rules there.)
C coded asserts cannot be turned off by the Modula-3 compiler. Only C
compiler.
>
> - Jay
>
>
>
>
>
>
> From: jay.krell at cornell.edu
> To: hosking at cs.purdue.edu
> Date: Sat, 12 Sep 2009 08:53:01 +0000
> CC: m3devel at elegosoft.com
> Subject: Re: [M3devel] [M3commit] CVS Update: cm3
>
> I believe it was this 30 minute window, 2009-02-16 02:00 -
> 2009-02-16 02:30:
>
> 2009-02-16 02:30 hosking
>
> * m3-libs/m3core/src/runtime/POSIX/: RTProcessPosixC.c,
> RTProcessPosixC.i3:
>
> Tidy up.
>
> 2009-02-16 02:20 hosking
>
> * m3-libs/m3core/src/: Csupport/VAX/dtoa.c, Csupport/big-endian/
> dtoa.c,
> Csupport/little-endian/dtoa.c, convert/CConvert.i3,
> convert/CConvert.m3, runtime/I386_DARWIN/RTThread.m3,
> runtime/common/RTCollector.m3, runtime/common/RTHeapRep.i3,
> runtime/common/RTOS.i3, thread/POSIX/ThreadPosix.m3,
> thread/PTHREAD/ThreadF.i3, thread/PTHREAD/ThreadPThread.m3,
> thread/PTHREAD/ThreadPThreadC.c, thread/PTHREAD/ThreadPThreadC.i3,
> thread/WIN32/ThreadWin32.m3:
>
> Clean up RTOS.LockHeap/RTOS.UnlockHeap implementations to better
> match underlying pthread semantics.
> This means that RTOS.WaitHeap must be called while RTOS.LockHeap
> is held.
> RTOS.BroadcastHeap can be called whether RTOS.LockHeap is held or
> not.
>
> 2009-02-16 02:02 hosking
>
> * m3-libs/m3core/src/runtime/common/RTHeapMap.i3:
>
> Expose DoWalkRef.
>
>
> - Jay
>
>
> From: hosking at cs.purdue.edu
> To: jay.krell at cornell.edu
> Date: Fri, 11 Sep 2009 22:21:44 -0400
> CC: m3devel at elegosoft.com
> Subject: Re: [M3devel] [M3commit] CVS Update: cm3
>
> Hmmm. Not sure. Do you have the code diffs?
>
> On 11 Sep 2009, at 17:28, Jay K wrote:
>
> They aren't really in Trestle or ThreadWin32.
> Well, right, often they are in ThreadWin32.
> But not always.
> I think it is, like, classic heap/stack corruption, via non-classic
> "locking not working" and gc moving stuff when it shouldn't.
> I don't have good evidence, but it usually NOT a hang/deadlock or
> assertion failure, it is usually an access violation (aka SEGSIGV)
> which as I understand must be the result of bugs in unsafe code.
>
> I did narrow it down a 30 minute window.
>
> - Jay
>
>
> From: hosking at cs.purdue.edu
> To: rcoleburn at scires.com
> Date: Fri, 11 Sep 2009 17:05:57 -0400
> CC: m3devel at elegosoft.com
> Subject: Re: [M3devel] [M3commit] CVS Update: cm3
>
> I have my suspicions that ThreadWin32 may have similar latent bugs
> in synchronization similar to those I have recently shaken out of
> the pthreads implementation. The good thing is that my
> implementation there is based in part on ThreadWin32, so it can't be
> too far off. It is inevitable with concurrent code that you will
> get different behavior at each run. The easiest things to debug are
> thread lockups, which can usually be diagnosed by staring at dumps
> of all the thread state. Harder is actual crashes like you are
> observing. If assertions can be used to monitor program invariants
> then it usually can be narrowed down. Unfortunately, I am not in a
> position to debug the ThreadWin32 code. Any help would be
> appreciated. The question is whether the crashes you see are in
> Trestle or ThreadWin32.
>
> Antony Hosking | Associate Professor | Computer Science | Purdue
> University
> 305 N. University Street | West Lafayette | IN 47907 | USA
> Office +1 765 494 6001 | Mobile +1 765 427 5484
>
>
>
>
> On 11 Sep 2009, at 16:54, Randy Coleburn wrote:
>
> Tony:
>
> Will any of this make any difference on Windows platform?
>
> I tried a couple of days ago to update all sources and rebuild.
> Both Juno and Mentor still crash on both XP and Vista. If you run
> multiple times, you get different crash results. (So much for
> deterministic behavior.) Let me know if there is anything I can do
> to help debug/test.
>
> Regards,
> Randy
>
> >>> Antony Hosking <hosking at elego.de> 9/11/2009 10:48 PM >>>
> CVSROOT:/usr/cvs
> Changes by:hosking at birch.09/09/11 22:48:37
>
> Modified files:
> cm3/m3-libs/m3core/src/thread/PTHREAD/: ThreadPThread.m3
>
> Log message:
> Mentor and Juno finally work on I386_DARWIN.
> ***Significant overhaul of thread alerting.***
> Invariant now is that all waiting is done on the thread's own
> condition
> variable. This cleanly permits signals and alerts from any other
> thread.
>
> Need to set DISPLAY=:0.0 and xhost+ to get around problems with
> DISPLAY=/tmp/launch-XXXXXX/:0.
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20090912/e3080e03/attachment-0002.html>
More information about the M3devel
mailing list