blob: ee706e5c3848d1167d96f6c486695df38c4e5acc [file] [log] [blame] [view] [edit]
# Troubleshooting
Here are some things to check if there are problems running syzkaller.
- Check that QEMU can successfully boot the virtual machine. For example,
if `IMAGE` is set to the VM's disk image (as per the `image` config value)
and `KERNEL` is set to the test kernel (as per the `kernel` config value)
then something like the following command should start the VM successfully:
```shell
qemu-system-x86_64 -hda $IMAGE -m 256 -net nic -net user,host=10.0.2.10,hostfwd=tcp::23505-:22 -enable-kvm -kernel $KERNEL -append root=/dev/sda
```
- Check that inbound SSH to the running virtual machine works. For example, with
a VM running and with `SSHKEY` set to the SSH identity (as per the `sshkey` config value) the
following command should connect:
```shell
ssh -i $SSHKEY -p 23505 root@localhost
```
- If you *are* having SSH difficulties, make sure your kernel configuration
has networking enabled. Sometimes defconfig errs minimalistic and omits the
following necessary options:
```shell
CONFIG_VIRTIO_NET=y
CONFIG_E1000=y
CONFIG_E1000E=y
```
- If the virtual machine reports that it has "Failed to start Raise network interfaces" or (which
is a consequence of that) syzkaller is unable to connect to the virtual machines, try to disable
the Predictable Network Interface Names mechanism. There are two ways to achieve this:
- Add the following two lines to the kernel configuration file and recompile the kernel.
```
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="net.ifnames=0"
```
- Add the following line to the VM's properties inside the syzkaller manager configuration:
```
"cmdline": "net.ifnames=0"
```
The resulting configuration may look like this:
```json
{
"target": "linux/amd64",
"http": "127.0.0.1:56741",
"workdir": "$GOPATH/src/github.com/google/syzkaller/workdir",
"kernel_obj": "$KERNEL",
"image": "$IMAGE/bullseye.img",
"sshkey": "$IMAGE/bullseye.id_rsa",
"syzkaller": "$GOPATH/src/github.com/google/syzkaller",
"procs": 8,
"type": "qemu",
"vm": {
"count": 4,
"kernel": "$KERNEL/arch/x86/boot/bzImage",
"cmdline": "net.ifnames=0",
"cpu": 2,
"mem": 2048
}
}
```
This is, however, not guaranteed to work across all virtualization technologies.
- Check that the `CONFIG_KCOV` option is available inside the VM:
- `ls /sys/kernel/debug # Check debugfs mounted`
- `ls /sys/kernel/debug/kcov # Check kcov enabled`
- Build the test program from `Documentation/kcov.txt` and run it inside the VM.
- Check that debug information (from the `CONFIG_DEBUG_INFO` option) is available
- Pass the hex output from the kcov test program to `addr2line -a -i -f -e $VMLINUX` (where
`VMLINUX` is the vmlinux file, as per the `kernel_obj` config value), to confirm
that symbols for the kernel are available.
Also see [this](/docs/troubleshooting.md) for generic troubleshooting advice.
If none of the above helps, file a bug on [the bug tracker](https://github.com/google/syzkaller/issues)
or ask us directly on the syzkaller@googlegroups.com mailing list.
Please include syzkaller commit id that you use and `syz-manager` output with `-debug` flag enabled if applicable.