[M3devel] pthreads problem, LINUXLIBC6, RHEL 5.8
Dragiša Durić
dragisha at m3w.org
Wed May 23 14:36:02 CEST 2012
Good news is: it was only range check error missing in generated code.
Input argument to Thread.Pause() was 1.0d9 (safe infinity idea on 64bit :)). When added to Time.Now(), it overflows 32bit component timespec. Negative components in timespec - EINVAL on pthread_cond_timedwait.
Good news II: No need for interim release because of this "bug".
On May 23, 2012, at 12:03 PM, Dragiša Durić wrote:
> Return code in question is 22, EINVAL, code is
>
> WITH r = pthread_cond_timedwait(self.cond, self.mutex, until) DO
> IF r = Uerror.ETIMEDOUT THEN
> WITH r = pthread_mutex_unlock(self.mutex) DO <*ASSERT r=0*> END;
> IF perfOn THEN PerfRunning() END;
> RETURN;
> END;
> IF r # 0 THEN
> RTIO.PutText("r="); RTIO.PutInt(r); RTIO.PutText("\n");
> RTIO.Flush();
> END;
> <*ASSERT r=0*> --- former line 586
>
> ...
> The pthread_cond_timedwait() and pthread_cond_wait() functions may fail if:
>
> EINVAL The value specified by cond, mutex, or abstime is invalid.
>
> EINVAL Different mutexes were supplied for concurrent pthread_cond_timedwait() or pthread_cond_wait() operations on the
> same condition variable.
>
> On May 22, 2012, at 4:59 PM, Antony Hosking wrote:
>
>> That looks like an old version of ThreadPThread. In the current version I don’t see any code at line 595.
>>
>> On May 22, 2012, at 4:59 AM, Dragiša Durić wrote:
>>
>>>
>>> ***
>>> *** runtime error:
>>> *** <*ASSERT*> failed.
>>> *** file "../src/thread/PTHREAD/ThreadPThread.m3", line 586
>>> ***
>>> ...
>>> #17 0x00ebd21d in ThreadPThread__XPause (M3_DMxDjQ_self=0x8052018, M3_CtKayy_n=1000000000, M3_AicXUJ_alertable=0 '\000')
>>> at ../src/thread/PTHREAD/ThreadPThread.m3:586
>>> #18 0x00ebd287 in Thread__Pause (M3_CtKayy_n=1000000000) at ../src/thread/PTHREAD/ThreadPThread.m3:595
>>> #19 0x006e142f in XLModuleMain__Delay (M3_D6v54n_frame=0xb7ebf180, M3_AZx9O5_args=0xb7ec0e58) at ../src/modules/XLModuleMain.m3:213
>>> …
>>>
>>> And so on… Looks like I reported this earlier, here:
>>>
>>> https://mail.elegosoft.com/pipermail/m3devel/2011-April/008757.html
>>>
>>> Any progress? Maybe I missed something.
>>>
>>> dd
>>>
>>>
>>
>
More information about the M3devel
mailing list