[CRIU] [PATCHv3 01/10] compat/vDSO/restorer: flush rt symtable from criu

Dmitry Safonov dsafonov at virtuozzo.com
Wed Aug 10 06:36:30 PDT 2016


On 08/10/2016 04:29 PM, Pavel Emelyanov wrote:
> On 08/08/2016 03:57 PM, Dmitry Safonov wrote:
>> What's happening here:
>> - rt_symtable is filled in criu on init
>> - in restorer we map compatible vDSO blob and refilling rt_symtable
>>   (in case of restoring 32-bit application)
>> - compatible and native symtables may (and it's very likely) have
>>   different symbols
>> - the symtable's values for symbols which are present in native vDSO,
>>   but absent in compatible vdso will be preserved from criu's process
>>   (which is not right)
>> - if saved compat vDSO blob has some symbols, which has native vDSO, but
>>   does not have compat restorer's blob, they may confuse restorer
>>
>> Impact: re-init rt symtable for compatible tasks in restorer.
>>
>> While, I belive I will optimize this out in future by filling
>> compatible symtable (and thus, making two rt symtabs) on criu init,
>> yet fix this by reinitialization.
>
> Well, we're not in a hurry :) So can we please fix this properly from
> the very beginning?

Hehe, right :)
I guess, I didn't want to add more code for initialization of second
compatible rt-symtable (as it's optimization - each compat task
wouldn't need to parse vdso symtable after that), at least while it's
outside master, I prefer to keep the compat-diff code size smaller,
so by that reason I did a quick little fixup instead of proper
optimized fix.


More information about the CRIU mailing list