[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GNU poke 2.90.0 on Linux/x86_64
From: |
Arsen Arsenović |
Subject: |
Re: GNU poke 2.90.0 on Linux/x86_64 |
Date: |
Mon, 23 Jan 2023 00:49:52 +0100 |
[CC += Luca, epsilon-devel]
Bruno Haible <bruno@clisp.org> writes:
> On a Linux/x86_64 system, with CC="gcc -ftrapv", I see these test failures:
>
> # of unexpected failures 10
>
> Running /media/develdata/devel/build/poke-2.90.0/testsuite/poke.cmd/cmd.exp
> ...
> Running
> /media/develdata/devel/build/poke-2.90.0/testsuite/poke.libpoke/libpoke.exp
> ...
> Running /media/develdata/devel/build/poke-2.90.0/testsuite/poke.map/map.exp
> ...
> Running
> /media/develdata/devel/build/poke-2.90.0/testsuite/poke.pickles/pickles.exp
> ...
> FAIL: /media/develdata/devel/build/poke-2.90.0/build-64/testsuite/../poke/poke
> killed: 2380586 exp6 0 0 CHILDKILLED SIGABRT SIGABRT
> FAIL: /media/develdata/devel/build/poke-2.90.0/build-64/testsuite/../poke/poke
> killed: 2380649 exp6 0 0 CHILDKILLED SIGABRT SIGABRT
> FAIL: /media/develdata/devel/build/poke-2.90.0/build-64/testsuite/../poke/poke
> killed: 2380991 exp6 0 0 CHILDKILLED SIGABRT SIGABRT
> FAIL: /media/develdata/devel/build/poke-2.90.0/build-64/testsuite/../poke/poke
> killed: 2381116 exp6 0 0 CHILDKILLED SIGABRT SIGABRT
> Running /media/develdata/devel/build/poke-2.90.0/testsuite/poke.pkl/pkl.exp
> ...
> FAIL: poke.pkl/cdiv-integers-overflow-1.pk execution test
> FAIL: poke.pkl/div-integers-overflow-1.pk execution test
> FAIL: poke.pkl/mod-integers-overflow-1.pk execution test
> FAIL: poke.pkl/neg-int-overflow-1.pk execution test
> FAIL: poke.pkl/sl-integers-4.pk execution test
> FAIL: poke.pkl/sub-integers-overflow-1.pk execution test
OK, reduced these tests. They all appear to stem from the same signed
underflow in jitter_distance_from. Backtrace:
#!!# 0x8000_0000U
Thread 1 "poke" received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6,
no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO
(ret) : 0;
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6, no_tid=no_tid@entry=0)
at pthread_kill.c:44
#1 0x00007ffff7d0605f in __pthread_kill_internal (signo=6, threadid=<optimized
out>) at pthread_kill.c:78
#2 0x00007ffff7cb6972 in __GI_raise (sig=sig@entry=6) at
../sysdeps/posix/raise.c:26
#3 0x00007ffff7ca046f in __GI_abort () at abort.c:79
#4 0x00007ffff7f78fbf in __subvdi3 () from
/home/arsen/gnu/poke/_build_bruno/libpoke/.libs/libpoke.so.0
#5 0x00007ffff7f6e60e in jitter_distance_from (
destination_p=destination_p@entry=0x80000000000000f9 <error: Cannot access
memory at address 0x80000000000000f9>, from_p=from_p@entry=0x7ffff28f3de6
'\377' <repeats 200 times>...)
at ../../jitter/machine/x86_64/jitter/machine/jitter-machine-c.c:51
#6 0x00007ffff7f6e62a in jitter_snippet_for_loading_register (
immediate_pointer=immediate_pointer@entry=0x7fffffffccd0 <incomplete
sequence \371>,
residual_register_index=residual_register_index@entry=0,
loading_code_to_write=loading_code_to_write@entry=0x7ffff28f3de6 '\377'
<repeats 200 times>...)
at ../../jitter/machine/x86_64/jitter/machine/jitter-machine-c.c:61
#7 0x00007ffff7f70bc8 in jitter_snippet_for_loading (
immediate_pointer=immediate_pointer@entry=0x7fffffffccd0 <incomplete
sequence \371>,
residual_index=residual_index@entry=0,
loading_code_to_write=loading_code_to_write@entry=0x7ffff28f3de6 '\377'
<repeats 200 times>...)
at ../../jitter/jitter/jitter-patch.c:54
#8 0x00007ffff7f719da in jitter_replicate_program (p=p@entry=0x5555562a1490)
at ../../jitter/jitter/jitter-replicate.c:353
#9 0x00007ffff7f74d7f in jitter_make_executable_routine (p=0x5555562a1490)
at ../../jitter/jitter/jitter-specialize.c:356
#10 0x00007ffff7f7479f in jitter_routine_make_executable_if_needed
(r=<optimized out>)
at ../../jitter/jitter/jitter-routine.c:94
#11 0x00007ffff7f2a64b in pvm_program_make_executable
(program=program@entry=0x7ffff3775e70)
at ../../libpoke/pvm-program.c:248
#12 0x00007ffff7eab16f in pkl_execute_statement (compiler=0x5555555b4cb0,
buffer=buffer@entry=0x555556042f10 "0x8000_0000U;",
source=source@entry=0x55555556d210 "<stdin>",
line=line@entry=1, column=column@entry=1, end=end@entry=0x7fffffffcea0,
val=0x7fffffffce60, exit_exception=0x7fffffffcea8) at ../../libpoke/pkl.c:396
#13 0x00007ffff7ea8fac in pk_compile_statement_with_loc (pkc=0x5555555a9540,
buffer=buffer@entry=0x555556042f10 "0x8000_0000U;",
source=source@entry=0x55555556d210 "<stdin>", line=line@entry=1,
column=column@entry=1, end=end@entry=0x7fffffffcea0, valp=0x7fffffffceb0,
exit_exception=0x7fffffffcea8) at ../../libpoke/libpoke.c:167
#14 0x000055555555e35b in pk_cmd_exec (str=str@entry=0x555556326f10
"0x8000_0000U") at ../../poke/pk-cmd.c:662
#15 0x000055555555d3ae in pk_repl () at ../../poke/pk-repl.c:409
#16 0x000055555555bca9 in main (argc=1, argv=0x7fffffffd0d8) at
../../poke/poke.c:840
The reproduction is quite simple: build poke as Bruno described, and try
to evaluate 0x8000_0000U. AFAICT, all tests that failed are some
variation of this.
This requires no-threading, since it's a codegen bug. All tests pass
with direct-threading.
> Find attached the poke.log. (Btw, why does it contains some Windows-style
> newlines at some places?)
--
Arsen Arsenović
signature.asc
Description: PGP signature
- Re: GNU poke 2.90.0 on Linux/x86_64,
Arsen Arsenović <=