Re: [Qemu-devel] [PATCH v3 23/46] tests/tcg/x86_64: add Makefile.target

2018-04-25 Thread Philippe Mathieu-Daudé


On 04/25/2018 05:43 AM, Alex Bennée wrote:
> 
> Philippe Mathieu-Daudé  writes:
> 
>> On 04/24/2018 12:23 PM, Alex Bennée wrote:
>>> The sources for x86_64 are shared in the i386 directory which will be
>>> included thanks to TARGET_BASE_ARCH. However not all sources build so
>>> we need to filter out the ones we can't build in the 64 bit world.
>>>
>>> Signed-off-by: Alex Bennée 
>>> ---
>>>  tests/tcg/i386/Makefile.target   |  2 +-
>>>  tests/tcg/x86_64/Makefile.target | 15 +++
>>>  2 files changed, 16 insertions(+), 1 deletion(-)
>>>  create mode 100644 tests/tcg/x86_64/Makefile.target
>>>
>>> diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target
>>> index 80ccad3d7b..27086c3f2b 100644
>>> --- a/tests/tcg/i386/Makefile.target
>>> +++ b/tests/tcg/i386/Makefile.target
>>> @@ -7,7 +7,7 @@ VPATH   += $(I386_SRC)
>>>
>>>  I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
>>>  I386_TESTS=$(I386_SRCS:.c=)
>>> -
>>> +I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS))
>>>  # Update TESTS
>>>  TESTS+=$(I386_ONLY_TESTS)
>>>
>>> diff --git a/tests/tcg/x86_64/Makefile.target 
>>> b/tests/tcg/x86_64/Makefile.target
>>> new file mode 100644
>>> index 00..74f170b9ed
>>> --- /dev/null
>>> +++ b/tests/tcg/x86_64/Makefile.target
>>> @@ -0,0 +1,15 @@
>>> +# -*- Mode: makefile -*-
>>> +#
>>> +# x86_64 tests - included from tests/tcg/Makefile.target
>>> +#
>>> +# Currently we only build test-x86_64 and test-i386-ssse3 from
>>> +# $(SRC)/tests/tcg/i386/
>>> +#
>>> +
>>> +X86_64_TESTS=$(filter-out $(I386_ONLY_TESTS), $(TESTS))
>>> +X86_64_TESTS+=test-x86_64
>>
>> The linux-test is taking long... I canceled it after ~15min on a i7
>> 2GHz. Maybe it also belongs to the "BROKEN TEST" series on x86_64?
>> Currently it is only skipped if $(TARGET_NAME) == i386.
> 
> Hmm it runs pretty quickly for me:
> 
> time ./qemu-x86_64 ./tests/linux-test
> 0.02user 0.03system 0:00.08elapsed 72%CPU (0avgtext+0avgdata 7384maxresident)k
> 0inputs+0outputs (0major+1207minor)pagefaults 0swaps
> 
> I wonder if the failure mode you are seeing is the same as the others
> which basically hang, which is why I added them to the broken test patch.

The test_clone() hangs here:

while (waitpid(pid1, , 0) != pid1);

32107 wait4(32109, 0x7ffdd2814a50, 0, NULL) = -1 ECHILD (No child processes)
32107 wait4(32109,  
32109 nanosleep({tv_sec=0, tv_nsec=1000},  
32107 <... wait4 resumed> 0x7ffdd2814a50, 0, NULL) = -1 ECHILD (No child
processes)
32107 wait4(32109, 0x7ffdd2814a50, 0, NULL) = -1 ECHILD (No child processes)

> 
>>
>> Reviewed-by: Philippe Mathieu-Daudé 
>>
>>> +TESTS:=$(X86_64_TESTS)
>>> +
>>> +test-x86_64: LDFLAGS+=-lm -lc
>>> +test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h
>>> +   $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
>>>
>>
>> $ make run-tcg-tests-x86_64-linux-user
>>   RUN-TESTS for x86_64
>>   TESTtest-mmap (default) on x86_64
>>   TESTtest-mmap (8k pages) on x86_64
>> ASAN:DEADLYSIGNAL
>> =
>> ==5717==ERROR: AddressSanitizer: SEGV on unknown address 0x7fcba47fc000
>> (pc 0x7fcba8a3bf4d bp 0x7ffd19d74700 sp 0x7ffd19d73e88 T0)
>> ==5717==The signal is caused by a WRITE memory access.
>> #0 0x7fcba8a3bf4c  (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)
>> #1 0x7fcbab33f891  (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x5c891)
>> #2 0x55dd3ae4a7e0 in mmap_frag /source/qemu/linux-user/mmap.c:189
>> #3 0x55dd3ae4bbce in target_mmap /source/qemu/linux-user/mmap.c:533
>> #4 0x55dd3ae4b8cb in target_mmap /source/qemu/linux-user/mmap.c:501
>> #5 0x55dd3ae3895c in do_syscall /source/qemu/linux-user/syscall.c:9448
>> #6 0x55dd3adfaa57 in cpu_loop /source/qemu/linux-user/main.c:258
>> #7 0x55dd3ae005f5 in main /source/qemu/linux-user/main.c:5147
>> #8 0x7fcba8903a86 in __libc_start_main
>> (/lib/x86_64-linux-gnu/libc.so.6+0x21a86)
>> #9 0x55dd3ad34a89 in _start
>> (/source/qemu/build/full/x86_64-linux-user/qemu-x86_64+0x350a89)
>> AddressSanitizer can not provide additional info.
>> SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)
>> ==5717==ABORTING
>> make[2]: ***
>> [/home/phil/source/qemu/tests/tcg/multiarch/Makefile.target:27:
>> run-test-mmap] Error 1
>>
>> Tested-by: Philippe Mathieu-Daudé 
> 
> This is only with ASAN enabled right?

Yes, but even without ASan test_clone() hangs.

Commenting test_clone():

$ make -j1 run-tcg-tests-x86_64-linux-user
  CROSS-BUILD x86_64 guest-tests with gcc-7
  CROSS-BUILD x86_64 guest-tests with gcc-7
  RUN-TESTS for x86_64
  TESTtest-mmap (default) on x86_64
  TESTtest-mmap (8k pages) on x86_64
  TESTtest-mmap (16k pages) on x86_64
  TESTtest-mmap (32k pages) on x86_64
  TESTsha1 on x86_64
  TESTlinux-test on x86_64
  TESTtestthread on x86_64
  TESTtest-x86_64 on x86_64
$



Re: [Qemu-devel] [PATCH v3 23/46] tests/tcg/x86_64: add Makefile.target

2018-04-25 Thread Alex Bennée

Philippe Mathieu-Daudé  writes:

> On 04/24/2018 12:23 PM, Alex Bennée wrote:
>> The sources for x86_64 are shared in the i386 directory which will be
>> included thanks to TARGET_BASE_ARCH. However not all sources build so
>> we need to filter out the ones we can't build in the 64 bit world.
>>
>> Signed-off-by: Alex Bennée 
>> ---
>>  tests/tcg/i386/Makefile.target   |  2 +-
>>  tests/tcg/x86_64/Makefile.target | 15 +++
>>  2 files changed, 16 insertions(+), 1 deletion(-)
>>  create mode 100644 tests/tcg/x86_64/Makefile.target
>>
>> diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target
>> index 80ccad3d7b..27086c3f2b 100644
>> --- a/tests/tcg/i386/Makefile.target
>> +++ b/tests/tcg/i386/Makefile.target
>> @@ -7,7 +7,7 @@ VPATH+= $(I386_SRC)
>>
>>  I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
>>  I386_TESTS=$(I386_SRCS:.c=)
>> -
>> +I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS))
>>  # Update TESTS
>>  TESTS+=$(I386_ONLY_TESTS)
>>
>> diff --git a/tests/tcg/x86_64/Makefile.target 
>> b/tests/tcg/x86_64/Makefile.target
>> new file mode 100644
>> index 00..74f170b9ed
>> --- /dev/null
>> +++ b/tests/tcg/x86_64/Makefile.target
>> @@ -0,0 +1,15 @@
>> +# -*- Mode: makefile -*-
>> +#
>> +# x86_64 tests - included from tests/tcg/Makefile.target
>> +#
>> +# Currently we only build test-x86_64 and test-i386-ssse3 from
>> +# $(SRC)/tests/tcg/i386/
>> +#
>> +
>> +X86_64_TESTS=$(filter-out $(I386_ONLY_TESTS), $(TESTS))
>> +X86_64_TESTS+=test-x86_64
>
> The linux-test is taking long... I canceled it after ~15min on a i7
> 2GHz. Maybe it also belongs to the "BROKEN TEST" series on x86_64?
> Currently it is only skipped if $(TARGET_NAME) == i386.

Hmm it runs pretty quickly for me:

time ./qemu-x86_64 ./tests/linux-test
0.02user 0.03system 0:00.08elapsed 72%CPU (0avgtext+0avgdata 7384maxresident)k
0inputs+0outputs (0major+1207minor)pagefaults 0swaps

I wonder if the failure mode you are seeing is the same as the others
which basically hang, which is why I added them to the broken test patch.

>
> Reviewed-by: Philippe Mathieu-Daudé 
>
>> +TESTS:=$(X86_64_TESTS)
>> +
>> +test-x86_64: LDFLAGS+=-lm -lc
>> +test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h
>> +$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
>>
>
> $ make run-tcg-tests-x86_64-linux-user
>   RUN-TESTS for x86_64
>   TESTtest-mmap (default) on x86_64
>   TESTtest-mmap (8k pages) on x86_64
> ASAN:DEADLYSIGNAL
> =
> ==5717==ERROR: AddressSanitizer: SEGV on unknown address 0x7fcba47fc000
> (pc 0x7fcba8a3bf4d bp 0x7ffd19d74700 sp 0x7ffd19d73e88 T0)
> ==5717==The signal is caused by a WRITE memory access.
> #0 0x7fcba8a3bf4c  (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)
> #1 0x7fcbab33f891  (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x5c891)
> #2 0x55dd3ae4a7e0 in mmap_frag /source/qemu/linux-user/mmap.c:189
> #3 0x55dd3ae4bbce in target_mmap /source/qemu/linux-user/mmap.c:533
> #4 0x55dd3ae4b8cb in target_mmap /source/qemu/linux-user/mmap.c:501
> #5 0x55dd3ae3895c in do_syscall /source/qemu/linux-user/syscall.c:9448
> #6 0x55dd3adfaa57 in cpu_loop /source/qemu/linux-user/main.c:258
> #7 0x55dd3ae005f5 in main /source/qemu/linux-user/main.c:5147
> #8 0x7fcba8903a86 in __libc_start_main
> (/lib/x86_64-linux-gnu/libc.so.6+0x21a86)
> #9 0x55dd3ad34a89 in _start
> (/source/qemu/build/full/x86_64-linux-user/qemu-x86_64+0x350a89)
> AddressSanitizer can not provide additional info.
> SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)
> ==5717==ABORTING
> make[2]: ***
> [/home/phil/source/qemu/tests/tcg/multiarch/Makefile.target:27:
> run-test-mmap] Error 1
>
> Tested-by: Philippe Mathieu-Daudé 

This is only with ASAN enabled right?

--
Alex Bennée



Re: [Qemu-devel] [PATCH v3 23/46] tests/tcg/x86_64: add Makefile.target

2018-04-24 Thread Philippe Mathieu-Daudé
On 04/24/2018 12:23 PM, Alex Bennée wrote:
> The sources for x86_64 are shared in the i386 directory which will be
> included thanks to TARGET_BASE_ARCH. However not all sources build so
> we need to filter out the ones we can't build in the 64 bit world.
> 
> Signed-off-by: Alex Bennée 
> ---
>  tests/tcg/i386/Makefile.target   |  2 +-
>  tests/tcg/x86_64/Makefile.target | 15 +++
>  2 files changed, 16 insertions(+), 1 deletion(-)
>  create mode 100644 tests/tcg/x86_64/Makefile.target
> 
> diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target
> index 80ccad3d7b..27086c3f2b 100644
> --- a/tests/tcg/i386/Makefile.target
> +++ b/tests/tcg/i386/Makefile.target
> @@ -7,7 +7,7 @@ VPATH += $(I386_SRC)
>  
>  I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
>  I386_TESTS=$(I386_SRCS:.c=)
> -
> +I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS))
>  # Update TESTS
>  TESTS+=$(I386_ONLY_TESTS)
>  
> diff --git a/tests/tcg/x86_64/Makefile.target 
> b/tests/tcg/x86_64/Makefile.target
> new file mode 100644
> index 00..74f170b9ed
> --- /dev/null
> +++ b/tests/tcg/x86_64/Makefile.target
> @@ -0,0 +1,15 @@
> +# -*- Mode: makefile -*-
> +#
> +# x86_64 tests - included from tests/tcg/Makefile.target
> +#
> +# Currently we only build test-x86_64 and test-i386-ssse3 from
> +# $(SRC)/tests/tcg/i386/
> +#
> +
> +X86_64_TESTS=$(filter-out $(I386_ONLY_TESTS), $(TESTS))
> +X86_64_TESTS+=test-x86_64

The linux-test is taking long... I canceled it after ~15min on a i7
2GHz. Maybe it also belongs to the "BROKEN TEST" series on x86_64?
Currently it is only skipped if $(TARGET_NAME) == i386.

Reviewed-by: Philippe Mathieu-Daudé 

> +TESTS:=$(X86_64_TESTS)
> +
> +test-x86_64: LDFLAGS+=-lm -lc
> +test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h
> + $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
> 

$ make run-tcg-tests-x86_64-linux-user
  RUN-TESTS for x86_64
  TESTtest-mmap (default) on x86_64
  TESTtest-mmap (8k pages) on x86_64
ASAN:DEADLYSIGNAL
=
==5717==ERROR: AddressSanitizer: SEGV on unknown address 0x7fcba47fc000
(pc 0x7fcba8a3bf4d bp 0x7ffd19d74700 sp 0x7ffd19d73e88 T0)
==5717==The signal is caused by a WRITE memory access.
#0 0x7fcba8a3bf4c  (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)
#1 0x7fcbab33f891  (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x5c891)
#2 0x55dd3ae4a7e0 in mmap_frag /source/qemu/linux-user/mmap.c:189
#3 0x55dd3ae4bbce in target_mmap /source/qemu/linux-user/mmap.c:533
#4 0x55dd3ae4b8cb in target_mmap /source/qemu/linux-user/mmap.c:501
#5 0x55dd3ae3895c in do_syscall /source/qemu/linux-user/syscall.c:9448
#6 0x55dd3adfaa57 in cpu_loop /source/qemu/linux-user/main.c:258
#7 0x55dd3ae005f5 in main /source/qemu/linux-user/main.c:5147
#8 0x7fcba8903a86 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x21a86)
#9 0x55dd3ad34a89 in _start
(/source/qemu/build/full/x86_64-linux-user/qemu-x86_64+0x350a89)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)
==5717==ABORTING
make[2]: ***
[/home/phil/source/qemu/tests/tcg/multiarch/Makefile.target:27:
run-test-mmap] Error 1

Tested-by: Philippe Mathieu-Daudé 



[Qemu-devel] [PATCH v3 23/46] tests/tcg/x86_64: add Makefile.target

2018-04-24 Thread Alex Bennée
The sources for x86_64 are shared in the i386 directory which will be
included thanks to TARGET_BASE_ARCH. However not all sources build so
we need to filter out the ones we can't build in the 64 bit world.

Signed-off-by: Alex Bennée 
---
 tests/tcg/i386/Makefile.target   |  2 +-
 tests/tcg/x86_64/Makefile.target | 15 +++
 2 files changed, 16 insertions(+), 1 deletion(-)
 create mode 100644 tests/tcg/x86_64/Makefile.target

diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target
index 80ccad3d7b..27086c3f2b 100644
--- a/tests/tcg/i386/Makefile.target
+++ b/tests/tcg/i386/Makefile.target
@@ -7,7 +7,7 @@ VPATH   += $(I386_SRC)
 
 I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
 I386_TESTS=$(I386_SRCS:.c=)
-
+I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS))
 # Update TESTS
 TESTS+=$(I386_ONLY_TESTS)
 
diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target
new file mode 100644
index 00..74f170b9ed
--- /dev/null
+++ b/tests/tcg/x86_64/Makefile.target
@@ -0,0 +1,15 @@
+# -*- Mode: makefile -*-
+#
+# x86_64 tests - included from tests/tcg/Makefile.target
+#
+# Currently we only build test-x86_64 and test-i386-ssse3 from
+# $(SRC)/tests/tcg/i386/
+#
+
+X86_64_TESTS=$(filter-out $(I386_ONLY_TESTS), $(TESTS))
+X86_64_TESTS+=test-x86_64
+TESTS:=$(X86_64_TESTS)
+
+test-x86_64: LDFLAGS+=-lm -lc
+test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h
+   $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
-- 
2.17.0