[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed
From: |
Alex Bennée |
Subject: |
Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed |
Date: |
Fri, 11 Sep 2020 09:34:19 -0000 |
Laurent Vivier <laurent@vivier.eu> writes:
> Le 10/09/2020 à 07:21, Launchpad Bug Tracker a écrit :
>> This problem occurs on CentOS-7.5 (64-bit) with qemu-5.1.0, qemu head
>> (commit 9435a8b3dd35f1f926f1b9127e8a906217a5518a) for riscv32-linux-
>> user.
>
> I tried to build qemu-5.1 on CentOS-7.5.1 but as python 3.5 is not
> available, I gave up.
>
>> Firstly, compile fails:
>> Compiling C object libqemu-riscv32-linux-user.fa.p/linux-user_strace.c.o
>> ../qemu.git/linux-user/strace.c:1210:18: error: ‘FALLOC_FL_KEEP_SIZE’
>> undeclared here (not in a function)
>> FLAG_GENERIC(FALLOC_FL_KEEP_SIZE),
>>
>> I have to add below include to linux-user/strace.c
>> diff --git a/linux-user/strace.c b/linux-user/strace.c
>> index 11fea14fba..22e51d4a8a 100644
>> --- a/linux-user/strace.c
>> +++ b/linux-user/strace.c
>> @@ -7,6 +7,7 @@
>> #include <sys/mount.h>
>> #include <arpa/inet.h>
>> #include <netinet/tcp.h>
>> +#include <linux/falloc.h>
>> #include <linux/if_packet.h>
>> #include <linux/netlink.h>
>> #include <sched.h>
>
> In fact, fallocate(2) says fcntl.h must be included.
> And qemu/osdep.h includes it.
> So you should not have this problem.
>
>>
>> Then trying qemu-riscv32 with a simple ELF, I get:
>> linux-user/elfload.c:2341: pgb_reserved_va: Assertion `addr == test' failed.
>>
>> strace shows that:
>> mmap(0x1000, 4294963200, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE,
>> -1, 0) = 0x10000
>> write(2, "qemu-riscv32: ../qemu.git/linux-"..., 103qemu-riscv32:
>> ../qemu.git/linux-user/elfload.c:2341: pgb_reserved_va: Assertion `addr ==
>> test' failed.
>> ) = 103
>>
>> The source code is in the function pgb_reserved_va (linux-
>> user/elfload.c). I think mmap cannot guarantee that the returned pointer
>> (test) equals to the parameter of addr. So is this a bug to assert (addr
>> == test)?
>
> I think Alex Bennée knows better this code than I do, so cc'ing him.
It should be able to do so because the earlier code (pgb_static) checks
for a hole the size of reserved_va in the host memory map. This should
be fairly easy for 32 bit guests given the amount of spare address space
you have on a 64 bit system.
I'm assuming CentOS 7.5 actually has a definition for
MAP_FIXED_NOREPLACE which should ensure we get what we asked for -
otherwise we are in the position of hoping the kernel honours what we
asked for.
>
> Thnaks
> Laurent
--
Alex Bennée
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1895080
Title:
pgb_reserved_va: Assertion `addr == test' failed
Status in QEMU:
New
Bug description:
This problem occurs on CentOS-7.5 (64-bit) with qemu-5.1.0, qemu head
(commit 9435a8b3dd35f1f926f1b9127e8a906217a5518a) for riscv32-linux-
user.
Firstly, compile fails:
Compiling C object libqemu-riscv32-linux-user.fa.p/linux-user_strace.c.o
../qemu.git/linux-user/strace.c:1210:18: error: ‘FALLOC_FL_KEEP_SIZE’
undeclared here (not in a function)
FLAG_GENERIC(FALLOC_FL_KEEP_SIZE),
I have to add below include to linux-user/strace.c
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 11fea14fba..22e51d4a8a 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -7,6 +7,7 @@
#include <sys/mount.h>
#include <arpa/inet.h>
#include <netinet/tcp.h>
+#include <linux/falloc.h>
#include <linux/if_packet.h>
#include <linux/netlink.h>
#include <sched.h>
Then trying qemu-riscv32 with a simple ELF, I get:
linux-user/elfload.c:2341: pgb_reserved_va: Assertion `addr == test' failed.
strace shows that:
mmap(0x1000, 4294963200, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE,
-1, 0) = 0x10000
write(2, "qemu-riscv32: ../qemu.git/linux-"..., 103qemu-riscv32:
../qemu.git/linux-user/elfload.c:2341: pgb_reserved_va: Assertion `addr ==
test' failed.
) = 103
The source code is in the function pgb_reserved_va (linux-
user/elfload.c). I think mmap cannot guarantee that the returned
pointer (test) equals to the parameter of addr. So is this a bug to
assert (addr == test)?
Attached configure script and test ELF file.
Thanks.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1895080/+subscriptions
- [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed, Hansni Bu, 2020/09/09
- [Bug 1895080] Re: pgb_reserved_va: Assertion `addr == test' failed, Laurent Vivier, 2020/09/10
- Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed, Laurent Vivier, 2020/09/10
- Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed, Hansni Bu, 2020/09/11
- Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed,
Alex Bennée <=
- Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed, Alex Bennée, 2020/09/11
- Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed, Hansni Bu, 2020/09/11
- Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed, Alex Bennée, 2020/09/11
- Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed, Hansni Bu, 2020/09/11
- Re: [Bug 1895080] [NEW] pgb_reserved_va: Assertion `addr == test' failed, Alex Bennée, 2020/09/11
[Bug 1895080] Re: pgb_reserved_va: Assertion `addr == test' failed, Alex Bennée, 2020/09/11
[Bug 1895080] Re: pgb_reserved_va: Assertion `addr == test' failed, Hansni Bu, 2020/09/14