[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