Ping x2 Re: [PATCH 1/2][RFC] #17645, fix slow DSO sorting behavior in dynamic loader

Chung-Lin Tang chunglin_tang@mentor.com
Tue Nov 26 08:19:00 GMT 2019


On 2019/11/26 3:08 AM, Carlos O'Donell wrote:
> On 11/25/19 4:19 AM, Chung-Lin Tang wrote:
>> Ping?
> 
> Thanks. This is stuck behind one more patch I'm reviewing
> for the higher priority (to me) NODELETE rollback fixes.

No problem, thanks for giving the time.

Chung-Lin

>> On 2019/11/14 5:58 PM, Chung-Lin Tang wrote:
>>> On 2019/10/31 9:13 PM, Carlos O'Donell wrote:
>>>> On 10/8/19 2:22 AM, Chung-Lin Tang wrote:
>>>>> Ping again.
>>>>
>>>> I have these applied and I'm putting this through testing.
>>>
>>> Hi Carlos,
>>> Thanks for the testing, wonder how it went?
>>>
>>> Thanks,
>>> Chung-Lin
>>>
>>>>> On 2019/9/17 5:55 PM, Chung-Lin Tang wrote:
>>>>>> Ping?
>>>>>>
>>>>>> On 2019/7/21 1:50 AM, Chung-Lin Tang wrote:
>>>>>>> Hi, this patch is our attempt at resolving the slow shared object sorting
>>>>>>> situation in #17645, #15310, and some effort at #15311.  I realize this is
>>>>>>> pretty unsuitable timing to be submitting a patch of such nature now (probably
>>>>>>> way too late to be included into 2.30), but still sending now anyways as this
>>>>>>> will probably need quite some discussion before being approved.
>>>>>>>
>>>>>>> Prior attempts at solving this slow sorting behavior appeared to have failed
>>>>>>> due to inadequate proposed testing, therefore cannot convince reviewers to
>>>>>>> touch what seems to be perceived as a sensitive and easy to break part of ld.so.
>>>>>>>
>>>>>>> Therefore the first part of this patch is not a change to the dynamic loader
>>>>>>> code proper, but a testing framework for constructing DSO sorting tests.
>>>>>>> It consists of a new Python script 'dso-ordering-test.py' that serves to
>>>>>>> generate both testcase source files and the needed Makefile fragments from
>>>>>>> a short description string, for example:
>>>>>>>
>>>>>>>        a->b->c->d          // four objects linked one after another
>>>>>>>
>>>>>>>        a->[bc]->d;b->c     // a depends on b and c, which both depend on d,
>>>>>>>                            // b depends on c (b,c linked to object a in fixed order)
>>>>>>>
>>>>>>>        a->b->c;{+a;%a;-a}  // a, b, c serially dependent, main program uses
>>>>>>>                            // dlopen/dlsym/dlclose on object a
>>>>>>>
>>>>>>>        a->b->c;{}!->[abc]  // a, b, c serially dependent; multiple tests generated
>>>>>>>                            // to test all permutations of a, b, c ordering linked
>>>>>>>                            // to main program
>>>>>>>
>>>>>>>       (Above is just a short description of what the script can do, more
>>>>>>>        documentation is in the script comments.)
>>>>>>>
>>>>>>> and, a patch to glibc/elf/Makefile which uses this script to add a few
>>>>>>> DSO sorting testcases.  The description string notation and output form of the
>>>>>>> generated testcases is short enough that both the test descriptions
>>>>>>> and expected outcomes can all directly be specified in the Makefile.
>>>>>>>
>>>>>>> In terms of the tests I added using this script, I am not completely sure they are
>>>>>>> (together with existing tests) adequate to prove algorithmic integrity in face
>>>>>>> of any ld.so code changes, but the script should provide a solid tool to further
>>>>>>> improve on coverage.  Also welcome suggestions if the current features are still
>>>>>>> lacking in expressing some case of shared object relations, or if the documentation
>>>>>>> still feels unclear.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Chung-Lin
>>>>>>>
>>>>>>> 2019-07-20  Chung-Lin Tang  <cltang@codesourcery.com>
>>>>>>>
>>>>>>>            [BZ #17645]
>>>>>>>            [BZ #15311]
>>>>>>>            [BZ #15310]
>>>>>>>            * elf/Makefile (test_dso_ordering): New make function.
>>>>>>>            (tst-dso-ordering[123456789]): Define new DSO sorting tests.
>>>>>>>            (tst-bz15311): Testcase from #15311.
>>>>>>>            * scripts/dso-ordering-test.py: New script.
>>>>
>>>>
>>
> 
> 



More information about the Libc-alpha mailing list