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

Diyu Zhou zhoudiyupku at gmail.com
Wed Sep 25 05:16:32 MSK 2019


I did a clean before building it. The program still persists.

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

That breaks my compilation as well.

On Tue, Sep 24, 2019 at 7:08 PM Dmitry Safonov <0x7f454c46 at gmail.com> wrote:
>
> 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