Hi,

I had tested with PTHREAD_DIAGASSERT however it did not produce any output.

I am building current and pkgsrc packages from scratch now.

I will reply my situation after this rebuild.

Thank you.

On February 3, 2020 7:23:33 AM GMT+09:00, Kamil Rytarowski <n...@gmx.com> wrote:
>Hello,
>
>I've checked with NetBSD-current from today (2020-02-02) and
>pkgsrc-current (2020-02-02) and package firefox-72.0.2.
>
>I'm not reproducing any crash due to pthread_equal(3) misuse.
>Everything
>I tested, worked for me.
>
>Please try PTHREAD_DIAGASSERT=ae and debug the culprit crash with a
>core(5) file.
>
>On 01.02.2020 22:20, Kamil Rytarowski wrote:
>> Good idea. It could be checked quicker... however I presume that
>> t1->pt_magic + t1->pt_magic already crash on invalid t1/t2 pointers
>as
>> the argument with condition is evaluated.
>> 
>> Ryo, you might check:
>> $ export PTHREAD_DIAGASSERT=ae
>> $ firefox
>> 
>> It should create a coredump for investigation.
>> 
>> According to POSIX
>>
>(https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_equal.html)
>> passing invalid parameters is UB.
>> 
>> GLIBC, Illumos and all other BSDs (+ older NetBSD) have no sanity
>check
>> in pthread_equal(3). Apparently we are the first ones to notice the
>bug.
>> 
>> On 01.02.2020 21:18, Andrew Doran wrote:
>>> Hmm.  Was there not originally an environment variable to control
>this
>>> behaviour, since many applications are buggy?
>>>
>>> Andrew
>>>
>>> On Sun, Feb 02, 2020 at 01:01:49AM +0900, Ryo ONODERA wrote:
>>>> Hi,
>>>>
>>>> pthread__error()s in pthread_equal() cause segfault
>>>> during start of pkgsrc/www/firefox-72.0.2.
>>>>
>>>> Without pthread__error()s, www/firefox works fine
>>>> like as follows.
>>>> However I have no idea why I get segfaults.
>>>>
>>>> Could you take a look at this problem?
>>>>
>>>> Index: lib/libpthread/pthread.c
>>>> ===================================================================
>>>> RCS file: /cvsroot/src/lib/libpthread/pthread.c,v
>>>> retrieving revision 1.162
>>>> diff -u -r1.162 pthread.c
>>>> --- lib/libpthread/pthread.c       29 Jan 2020 17:11:57 -0000      1.162
>>>> +++ lib/libpthread/pthread.c       1 Feb 2020 15:58:03 -0000
>>>> @@ -770,11 +770,13 @@
>>>>    if (__predict_false(__uselibcstub))
>>>>            return __libc_thr_equal_stub(t1, t2);
>>>>  
>>>> +#if 0
>>>>    pthread__error(EINVAL, "Invalid thread",
>>>>        t1->pt_magic == PT_MAGIC);
>>>>  
>>>>    pthread__error(EINVAL, "Invalid thread",
>>>>        t2->pt_magic == PT_MAGIC);
>>>> +#endif
>>>>  
>>>>    /* Nothing special here. */
>>>>    return (t1 == t2);
>>>> @@ -1108,7 +1110,7 @@
>>>>  {
>>>>    char buf[1024];
>>>>    size_t len;
>>>> -  
>>>> +
>>>>    if (pthread__diagassert == 0)
>>>>            return;
>>>>  
>>>>
>>>>
>>>> "Kamil Rytarowski" <ka...@netbsd.org> writes:
>>>>
>>>>> Module Name:      src
>>>>> Committed By:     kamil
>>>>> Date:             Wed Jan 29 16:03:44 UTC 2020
>>>>>
>>>>> Modified Files:
>>>>>   src/lib/libpthread: pthread.c pthread_getcpuclockid.c
>>>>>
>>>>> Log Message:
>>>>> Chack thread->pt_magic with PT_MAGIC promptly
>>>>>
>>>>> Rearrange some checks to avoid verifying pthread_t after using it.
>>>>>
>>>>>
>>>>> To generate a diff of this commit:
>>>>> cvs rdiff -u -r1.160 -r1.161 src/lib/libpthread/pthread.c
>>>>> cvs rdiff -u -r1.2 -r1.3
>src/lib/libpthread/pthread_getcpuclockid.c
>>>>>
>>>>> Please note that diffs are not public domain; they are subject to
>the
>>>>> copyright notices on the relevant files.
>>>>>
>>>>
>>>> -- 
>>>> Ryo ONODERA // r...@tetera.org
>>>> PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1
>15F3
>> 
>> 

-- 
Ryo ONODERA // r...@tetera.org
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB FD1B F404 27FA C7D1 15F3

Reply via email to