diff options
Diffstat (limited to 'results/classifier/105/device/2179')
| -rw-r--r-- | results/classifier/105/device/2179 | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/results/classifier/105/device/2179 b/results/classifier/105/device/2179 new file mode 100644 index 000000000..f66668513 --- /dev/null +++ b/results/classifier/105/device/2179 @@ -0,0 +1,64 @@ +device: 0.828 +other: 0.683 +semantic: 0.673 +graphic: 0.581 +instruction: 0.462 +mistranslation: 0.313 +vnc: 0.190 +network: 0.176 +socket: 0.168 +assembly: 0.083 +boot: 0.078 +KVM: 0.034 + +qemu-storage-daemon: fuse export deadlock +Steps to reproduce: +1. Start QSD +2. Issue a `block-stream` and a read from the fuse export at the same time + +``` +Term 1: +(QEMU) block-stream device=root job-id=job1 +{"return": {}} +(QEMU) +{'timestamp': {'seconds': 1708386076, 'microseconds': 965781}, 'event': 'JOB_STATUS_CHANGE', 'data': {'status': 'created', 'id': 'job1'}} +{'timestamp': {'seconds': 1708386076, 'microseconds': 965838}, 'event': 'JOB_STATUS_CHANGE', 'data': {'status': 'running', 'id': 'job1'}} +(QEMU) +(QEMU) +(QEMU) +(QEMU) query-block-jobs + +<HANGS> + + +Term 2: +dd if=/tmp/fuse_exp of=/dev/null bs=1M skip=2000 +<HANGS> +``` + +``` +$ pidof qemu-storage-daemon + 92313 +$ sudo cat /proc/92313/task/92313/stack +[<0>] do_sys_poll+0x4e1/0x5d0 +[<0>] __x64_sys_ppoll+0xe2/0x170 +[<0>] do_syscall_64+0x64/0xe0 +[<0>] entry_SYSCALL_64_after_hwframe+0x6e/0x76 + +$ sudo cat /proc/92313/task/92314/stack +[<0>] futex_wait_queue+0x63/0x90 +[<0>] __futex_wait+0x14f/0x1c0 +[<0>] futex_wait+0x77/0x110 +[<0>] do_futex+0xcb/0x190 +[<0>] __x64_sys_futex+0x129/0x1e0 +[<0>] do_syscall_64+0x64/0xe0 +[<0>] entry_SYSCALL_64_after_hwframe+0x6e/0x76 +``` +Additional information: +This might also be a general between `block-stream` and `copy-on-read` but I could only trigger the problem with FUSE and not NBD. E.g this command does not deadlock: +``` +--export type=nbd,id=nbd-root,node-name=root_crw,name=root_crw,writable=off + +nbdfuse /tmp/tmp.69dRvNXj1O/disk nbd://localhost:10809/root_crw +dd if=/tmp/tmp.69dRvNXj1O/disk of=/dev/null bs=1M skip=2000 +``` |