fgsect/FitM

Example run failed

Closed this issue · 6 comments

Hi,
I built FitM with make, and run the example using FITM_ARGS=config/fitm-args.ftp.json make run but got the following failure:

FITM_ARGS=config/fitm-args.ftp.json make run
cargo build --release
   Compiling fitm v0.1.0 (/root/projects/fuzzer/FitM)
    Finished release [optimized + debuginfo] target(s) in 27.20s
sudo rm -rf ./active-state
sudo rm -rf ./cmin-tmp
sudo ./target/release/fitm config/fitm-args.ftp.json
cwd: "/root/projects/fuzzer/FitM"

    __________________  ___
   / ____/  _/_  __/  |/  /
  / /_   / /  / / / /|_/ / 
 / __/ _/ /  / / / /  / /  
/_/   /___/ /_/ /_/  /_/   


File fitm-state.json not found. Restarting from scratch.
No valid state to resume. Starting fresh :)
==== [*] Time start init_run: 2022-04-04 21:13:55 ====
[*] Init run finished with exit code None
[*] Target was killed by signal. Assuming dump success.
thread 'main' panicked at '[!] parse_pid failed to parse JSON in utils::parse_pid: UnexpectedEndOfJson', src/utils.rs:67:59
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
make: *** [Makefile:40:run] error 101

Could you please help me?

Hey :),
could you print the unparsed json (pstree_string) by adding a print after this line? Maybe crit is producing some broken json. We had that problem before.
How did you install criu? If you are not using the vagrantfile, what version do you use?

Hi :b,
I added

println!("pstree_string: {}(end)", pstree_string);

after this line, and the output was:

pstree_string: (end)

The pstree_string was empty.
I didn't install criu specially. I just installed the following apps as described in provision.sh

apt-get -y update && apt-get -y upgrade
apt-get -y install ntp # get rid of clock-skew in the vm
apt-get -y install build-essential binutils pkg-config python-ipaddress make protobuf-compiler protobuf-c-compiler libprotobuf-c-dev libprotobuf-dev libnet-dev python3-protobuf python3-yaml protobuf-c-compiler libbsd-dev libprotobuf-dev libprotobuf-c-dev protobuf-c-compiler protobuf-compiler python-protobuf libnl-3-dev libcap-dev ninja-build libglib2.0-dev cmake libcapstone-dev libaio-dev libnftables-dev iproute2
sudo -u vagrant -- sh -c "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y"

# target deps
apt-get -y install libgnutls28-dev bison flex libssl-dev autoconf libtool libsdl2-dev libopus-dev || true

and then make.
Specifically, I didn't use the vagrantfile, and I'm working on Ubuntu 20.04 LTS.

Hm. Whats in the active state folder? Any failing syscalls/error msgs in stderr? What does criu.log report? Can you call crit (criu/crit/crit-python3) manually?

Hi, the active-state/stderr and active-state/snapshot/criu.log are attached (https://github.com/fgsect/FitM/files/8458437/active-state.zip),

and here is the output when calling crit (criu/crit/crit-python3) manually

$ ./criu/crit/crit-python3 
Traceback (most recent call last):
  File "/root/projects/fuzzer/FitM/./criu/crit/crit-python3", line 3, in <module>
    from pycriu import cli
  File "/root/projects/fuzzer/FitM/criu/crit/pycriu/__init__.py", line 1, in <module>
    from . import rpc_pb2 as rpc
  File "/root/projects/fuzzer/FitM/criu/crit/pycriu/rpc_pb2.py", line 6, in <module>
    from google.protobuf.internal import enum_type_wrapper
ModuleNotFoundError: No module named 'google'

Heyhey, so looking at the output from running crit-python3 to me it seems like the protobuf module for python has not been installed correctly. I would say that's python3-protobuf. See here. Installing with pip should also work.

Closing this for lack of activity, reopen if the problem persists :)