Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/lib/libpthread
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 <n54%gmx.com@localhost> 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" <kamil%netbsd.org@localhost> 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 // ryo%tetera.org@localhost
>>>> PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB FD1B F404 27FA C7D1
>15F3
>>
>>
--
Ryo ONODERA // ryo%tetera.org@localhost
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB FD1B F404 27FA C7D1 15F3
Home |
Main Index |
Thread Index |
Old Index