1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<think>
Okay, so I'm trying to classify this bug report related to QEMU. Let me read through it carefully and understand what's going on here.
The issue is about mmap behaving incorrectly when dealing with large files on a 64-bit host running a 32-bit executable via QEMU. The user provided a test program, `test_mmap.c`, which they compiled as a 32-bit binary. When they run it under qemu-i386, the output is "Incorrect data 1", indicating that something went wrong with the mmap operation.
The problem seems to occur when the offset exceeds 4GiB, which makes sense because 32-bit systems can't address more than that due to their limited pointer size. So, when trying to mmap a file beyond 4GB on a 64-bit host using a 32-bit guest executable via QEMU, it's failing.
Looking at the possible categories: instruction, syscall, runtime. The user is asking which category this bug falls into. Let me think about each possibility.
First, "instruction" would imply that there's an issue with how specific instructions are handled by QEMU. This doesn't seem to be the case here since the problem isn't about executing a particular opcode incorrectly but rather handling file mappings.
Next, "syscall": this relates to errors when making system calls. Mmap is indeed a system call (sys_mmap), so if QEMU is mishandling it, especially across 32/64-bit boundaries, that would fit here. The issue arises during the mmap operation, which involves handling pointers and addresses correctly between different architectures.
Lastly, "runtime" is for other runtime errors not covered by instructions or syscalls. Since this seems tied to how system calls are emulated, especially involving address spaces and memory mappings, it's more likely a syscall issue rather than a general runtime problem.
Putting it all together: the bug is related to QEMU's handling of mmap syscalls when the guest is 32-bit and the host is 64-bit. Therefore, this should be categorized under "syscall".
</think>
The bug relates to how QEMU handles the mmap system call across different architectures, specifically between a 64-bit host and a 32-bit guest executable.
syscalls
|