* Salvatore Bonaccorso:

> Hi Florian,
>
> On Wed, Nov 20, 2024 at 02:05:46PM +0100, Florian Weimer wrote:
>> * Salvatore Bonaccorso:
>> 
>> > [ Changes ]
>> > Quoting the upsream commit is likely the best to explain the changes:
>> >
>> > | cr-restore: rseq: dynamically handle *libc with rseq
>> > | Before this patch we assumed that CRIU is compiled against
>> > | the same GLibc as it runs with. But as we see from real
>> > | world examples like #1935 it's not always true.
>> > | 
>> > | The idea of this patch is to detect rseq configuration
>> > | for the main CRIU process and use it to unregister
>> > | rseq for all further child processes. It's correct,
>> > | because we restore pstree using clone*() syscalls,
>> > | don't use exec*() (!) syscalls, so rseq gets inherited
>> > | in the kernel and rseq configuration remains the same
>> > | for all children processes.
>> 
>> There's are further commit you should consider picking up:
>> 
>> commit 089345f77a34d1bc7ef146d650636afcd3cdda21
>> Author: Florian Weimer <fwei...@redhat.com>
>> Date:   Wed Jul 10 18:34:50 2024 +0200
>> 
>>     Adjust to glibc __rseq_size semantic change
>>     
>>     In commit 2e456ccf0c34a056e3ccafac4a0c7effef14d918 ("Linux: Make
>>     __rseq_size useful for feature detection (bug 31965)") glibc 2.40
>>     changed the meaning of __rseq_size slightly: it is now the size
>>     of the active/feature area (20 bytes initially), and not the size
>>     of the entire initially defined struct (32 bytes including padding).
>>     The reason for the change is that the size including padding does not
>>     allow detection of newly added features while previously unused
>>     padding is consumed.
>>     
>>     The prep_libc_rseq_info change in criu/cr-restore.c is not necessary
>>     on kernels which have full ptrace support for obtaining rseq
>>     information because the code is not used.  On older kernels, it is
>>     a correctness fix because with size 20 (the new value), rseq
>>     registeration would fail.
>>     
>>     The two other changes are required to make rseq unregistration work
>>     in tests.
>>     
>>     Signed-off-by: Florian Weimer <fwei...@redhat.com>
>
> Do you consider this optional, or required for the fix to land in
> bookrworm?

The mentioned glibc change is probably in bookworm already.  I think
it's this one from 2.36-9+deb12u8:

  - Fixes rseq extension mechanism.

I think you need the test changes of the criu patch to get a clean
run.  The non-test changes are dormant with sufficiently recent
kernels that contain full ptrace support.

Reply via email to