Skip to content

Too many tests for 32-bit #20107

@omus

Description

@omus

First discovered in #12274 by @quinnj

If you run a large number of test via make test on a 32-bit system the GC will abort:

GC error (probable corruption) :
Allocations: 54615495 (Pool: 54614440; Big: 1055); GC: 17
<?#0x95e6130::0x20>

signal (6): Aborted
while loading /home/omus/julia/test/gcabort.jl, in expression starting on line 2
__kernel_vsyscall at  (unknown line)
gsignal at /lib/i386-linux-gnu/libc.so.6 (unknown line)
abort at /lib/i386-linux-gnu/libc.so.6 (unknown line)
gc_assert_datatype at /home/omus/julia/src/gc.c:1389 [inlined]
gc_mark_obj at /home/omus/julia/src/gc.c:1528
gc_push_root at /home/omus/julia/src/gc.c:1212 [inlined]
gc_scan_obj at /home/omus/julia/src/gc.c:1469
gc_push_root at /home/omus/julia/src/gc.c:1215 [inlined]
gc_scan_obj at /home/omus/julia/src/gc.c:1498

...

#remotecall_fetch#492 at ./multi.jl:1106
jl_call_method_internal at /home/omus/julia/src/julia_internal.h:248 [inlined]
jl_apply_generic at /home/omus/julia/src/gf.c:2214
jl_apply at /home/omus/julia/src/julia.h:1413 [inlined]
jl_f__apply at /home/omus/julia/src/builtins.c:556
remotecall_fetch at ./multi.jl:1106
jl_call_method_internal at /home/omus/julia/src/julia_internal.h:248 [inlined]
jl_apply_generic at /home/omus/julia/src/gf.c:2214
macro expansion at /home/omus/julia/test/runtests.jl:65 [inlined]
#38 at ./task.jl:332
unknown function (ip: 0x8c76f430)
jl_call_method_internal at /home/omus/julia/src/julia_internal.h:248 [inlined]
jl_apply_generic at /home/omus/julia/src/gf.c:2214
jl_apply at /home/omus/julia/src/julia.h:1413 [inlined]
start_task at /home/omus/julia/src/task.c:261
Allocations: 54615495 (Pool: 54614440; Big: 1055); GC: 17
Aborted (core dumped)
Makefile:12: recipe for target 'gcabort' failed
make[1]: *** [gcabort] Error 134
Makefile:563: recipe for target 'test-gcabort' failed
make: *** [test-gcabort] Error 2

This issue can be reproduced by creating the file test/gcabort.jl with the following content:

using Base.Test
let y=0, m=0, d=0, h=0, mi=0, s=0, ms=0
    for h = 0:23, mi = 0:59, s = 0:59, ms in (0,1,500,999), y in (0,1,500,999), m in (1,2,3,4), d in 1:1
        dt = Dates.DateTime(y,m,d,h,mi,s,ms)
        @test y == Dates.year(dt)
        @test m == Dates.month(dt)
        @test d == Dates.day(dt)
        @test h == Dates.hour(dt)
        @test mi == Dates.minute(dt)
        @test s == Dates.second(dt)
        @test ms == Dates.millisecond(dt)
    end
end

Then running make test-gcabort generates the exception. Note that running julia test/gcabort.jl is successful.

Metadata

Metadata

Assignees

Labels

bugIndicates an unexpected problem or unintended behaviorneeds testsUnit tests are required for this changesystem:32-bitAffects only 32-bit systemstestsystemThe unit testing framework and Test stdlib

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions