<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
And "yes" you need to disable switching around free, the same as malloc. And calloc. And realloc.<BR>
The disable switching *might* be at a lower level than you realize, so *might* not be missing.<BR>
That is, it might be in our C wrappers. I can check later.<BR>
 <BR>
 - Jay<BR> <BR>
> From: hosking@cs.purdue.edu<BR>> Date: Mon, 18 Apr 2011 12:30:45 -0400<BR>> To: mika@async.caltech.edu<BR>> CC: m3devel@elegosoft.com<BR>> Subject: Re: [M3devel] malloc/free from Modula-3?<BR>> <BR>> Yes, I think you should avoid -pthread.<BR>> <BR>> <BR>> Antony Hosking | Associate Professor | Computer Science | Purdue University<BR>> 305 N. University Street | West Lafayette | IN 47907 | USA<BR>> Office +1 765 494 6001 | Mobile +1 765 427 5484<BR>> <BR>> <BR>> <BR>> <BR>> On Apr 18, 2011, at 12:10 PM, Mika Nystrom wrote:<BR>> <BR>> > <BR>> > Tony Hosking writes:<BR>> >> I suspect the problem is re-entrance to the library. Should you be =<BR>> >> disabling user thread switching somewhere?<BR>> > <BR>> > I suspect the same. That's why I asked what the "rules" are<BR>> > for calling malloc and free. I notice that the m3core code has<BR>> > Scheduler.DisableSwitching around all calls to malloc but not around calls<BR>> > to free. Why would one be unsafe and the other safe? It is always free<BR>> > that my program hangs up on by the way. Surrounding all "suspicious" calls<BR>> > in my code with Scheduler.DisableSwitching doesn't solve the problem, as<BR>> > far as I can tell.<BR>> > <BR>> > I am further suspecting that my problem is related to my having linked the<BR>> > program with -pthread. I am also guessing that this is the same reason<BR>> > you can't link FreeBSD user threads programs with -pthread: namely that if<BR>> > you go reentrantly into the pthread malloc library some code assumes <BR>> > the two invocations are from separate threads and locks up if they are from<BR>> > the same thread. That's my guess anyhow. But that doesn't explain why<BR>> > I've never seen any malloc/free problems on FreeBSD without -pthread.<BR>> > (I don't think I have, anyhow.)<BR>> > <BR>> > Mika<BR>> <BR>                                       </body>
</html>