[CRIU] ARMv5 implementation

Cyrill Gorcunov gorcunov at gmail.com
Wed Mar 6 15:24:25 MSK 2019


On Wed, Mar 06, 2019 at 09:47:40AM +0000, Maikel Coenen wrote:
>    Hi All,

Hi!

>    Currently I am porting CRIU to ARMv5. I have already added/changed some
>    code in atomic.h, bitops.S, compel/src/main.c and the Makefile. It is now
>    compiling successfully but I get an error when restoring a simple bash
>    application. (https://criu.org/Simple_loop)
> 
>    The error reported is:
> 
>    (834.884950 Error (criu/cr-restore.c:1433): 359 killed by signal 9: Killed
> 
>    (834.886002 Error (criu/cr-restore.c:2309): Restoring FAILED.
> 
>    When debugging with GDB, the following results are shown:
> 
>    Thread 2.1 "criu" received signal SIGILL, Illegal instruction.
> 
>    [Switching to Thread 0xb6ff8010 (LWP 359)]
> 
>    0x0010ec88 in opts ()
>     
> 
>    And disassembling this address shows:
>     
> 
>    Dump of assembler code for function opts:
...

I've no clue about arm arch but the disasm data looks like
you've jumped into 'data' instead of text code. I would look
rather if addresses where restorer blob is put is somehow
close to addresses you got in disasm. Maybe rt_sigreturn
call didn't passed and you continue execution data which
put after the restorer executable blob.

> 
>    => 0x0010ec88 <+132>:  ff ff ff ff                 ; <UNDEFINED>
>    instruction: 0xffffffff
> 
>    End of assembler dump.
> 
>    Obviously something is not going quite right but at this point I am stuck
>    how to go further. Probably some instruction is used which is not present
>    in the ARMv5 instruction set but I don’t know where to find this
>    instruction and which file I have to change. Does anyone know where/how to
>    look at this error, so I can continue? Any insight is appreciated.


More information about the CRIU mailing list