[CRIU] BUG: CRIU corrupt floating point state after checkpoint

Dmitry Safonov 0x7f454c46 at gmail.com
Wed Sep 25 05:08:22 MSK 2019


On 9/25/19 3:02 AM, Diyu Zhou wrote:
> Unfortunately, neither option works.
> The problem still persists.

Note, that before rebuild the pie directory should be cleaned like:
`git clean -fdx criu/pie`
seems like we missing some dependency line in a Makefile to rebuild pies
on changes to compel.

> On Tue, Sep 24, 2019 at 6:54 PM Dmitry Safonov <0x7f454c46 at gmail.com> wrote:
>>
>> On 9/25/19 2:51 AM, Dmitry Safonov wrote:
>>> On 9/25/19 2:41 AM, Diyu Zhou wrote:
>>>> Sure. See:
>>>> https://github.com/vmexit/fpu-debug
>>>>
>>>> I'm very new to github, so let me know if there is any issue
>>>> accessing the link.
>>>
>>> Ok, might this quick-fast oneliner help?
>>>
>>> --->8---
>>> diff --git a/compel/src/main.c b/compel/src/main.c
>>> index 51bac099fe5e..ca3c0318093e 100644
>>> --- a/compel/src/main.c
>>> +++ b/compel/src/main.c
>>> @@ -41,7 +41,7 @@ typedef struct {
>>>  static const flags_t flags = {
>>>  #if defined CONFIG_X86_64
>>>         .arch           = "x86",
>>> -       .cflags         = COMPEL_CFLAGS_PIE,
>>> +       .cflags         = COMPEL_CFLAGS_PIE " -mfpmath=387",
>>
>> Maybe the right one would be actually -msoft-float  ^^
>> That should insert calls to a library, which will break the build if it
>> actually happens.

Hmm, that's fun: -msoft-float doesn't break the build for me..
But together " -msoft-float -mno-sse" breaks. Ugh:

[..]
  CC       criu/pie/util-vdso.o
  CC       criu/pie/util.o
  CC       criu/pie/util-vdso-elf32.o
In file included from /usr/include/stdlib.h:1010,
                 from criu/pie/util-vdso-elf32.c:1:
/usr/include/bits/stdlib-float.h: In function ‘atof’:
/usr/include/bits/stdlib-float.h:26:1: error: SSE register return with
SSE disabled
   26 | {
      | ^
In file included from /usr/include/stdlib.h:1010,
                 from criu/pie/util-vdso.c:1:
/usr/include/bits/stdlib-float.h: In function ‘atof’:
/usr/include/bits/stdlib-float.h:26:1: error: SSE register return with
SSE disabled
   26 | {
      | ^

I presume that we don't use atof() in parasite, but the include
<stdlib.h> prevents using -mno-sse.

[it's a night-time in my time zone, so I'm AFK for some hours]

Thanks,
          Dmitry


More information about the CRIU mailing list