Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Corruption/segfault with Array of primitive type with (some) non-power of 2 length #29053

Closed
rfourquet opened this issue Sep 5, 2018 · 3 comments
Labels
arrays [a, r, r, a, y, s] bug Indicates an unexpected problem or unintended behavior

Comments

@rfourquet
Copy link
Member

E.g:

julia> primitive type U 24 end

julia> U() = Base.zext_int(U, 0x0);

julia> U()
U(0x000000)

julia> fill(U(), 1000);
free(): corrupted unsorted chunks

signal (6): Aborted
in expression starting at no file:0
^C^C^C^C^CWARNING: Force throwing a SIGINT
^C^C^C^Z

In another try, I got a segfault, of which here is the first few lines (I can include more if needed):

signal (11): Segmentation fault
in expression starting at no file:0
jl_gc_pool_alloc at /local/src/julia/src/gc.c:964
jl_gc_alloc_ at /local/src/julia/src/julia_internal.h:274 [inlined]
jl_gc_alloc at /local/src/julia/src/gc.c:2673
_new_array_ at /local/src/julia/src/array.c:100

May be related to #26026

@rfourquet rfourquet added bug Indicates an unexpected problem or unintended behavior arrays [a, r, r, a, y, s] labels Sep 5, 2018
@JeffBezanson JeffBezanson added this to the 1.0.x milestone Sep 5, 2018
@chethega
Copy link
Contributor

chethega commented Sep 6, 2018

I am pretty sure you are right that this is a dup of #26026.

@mikhail-j
Copy link
Contributor

mikhail-j commented Sep 14, 2018

@rfourquet @JeffBezanson
In my case, I used:

julia> primitive type Int24 <: Integer 24 end

Now, wrap Int24 in a struct:

julia> struct U
           data::Int24
       end

Create an Int24 wrapped in a struct:

julia> int24_struct_wrap=U(Base.zext_int(Int24, 0x0))
U(Int24(0x000000))

Allocating an array of 1000 structs containing an Int24 does not lead to crash/segmentation fault:

julia> int24_array=fill(int24_struct_wrap, 1000)
1000-element Array{U, 1}:
 U(Int24(0x000000))
 U(Int24(0x000000))
   ?
 U(Int24(0x000000))
 U(Int24(0x000000))

The size of int24_array is 4000 bytes:

julia> sizeof(int24_array)
4000

This shows that Int24 can be used without issues if directly used with an array of structs wrapping an Int24 data type.

I would like to point out that generating an Array{Int24, 1} from Array{U, 1} using map() also causes julia to crash:

julia> int24_array_mapped=map(x->x.data, int24_array)
Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety).
Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x77cdccb1 -- RtlFreeHeap at C:\Windows\SYSTEM32\ntdll.dll (unknown line)
in expression starting at no file:0
RtlFreeHeap at C:\Windows\SYSTEM32\ntdll.dll (unknown line)
EtwEventWriteStartScenario at C:\Windows\SYSTEM32\ntdll.dll (unknown line)
RtlAllocateHeap at C:\Windows\SYSTEM32\ntdll.dll (unknown line)
malloc at C:\Windows\system32\msvcrt.dll (unknown line)
Znwy at C:\Users\%USERNAME%\Julia-1.0.0\bin\libstdc++-6.dll (unknown line)
_ZN12_GLOBAL__N_18RAGreedy20runOnMachineFunctionERN4llvm15MachineFunctionE at C:\Users\%USERNAME%\Julia-1.0.0\bin\LLVM.dll (unknown line)
_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE at C:\Users\%USERNAME%\Julia-1.0.0\bin\LLVM.dll (unknown line)
_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE at C:\Users\%USERNAME%\Julia-1.0.0\bin\LLVM.dll (unknown line)
_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE at C:\Users\%USERNAME%\Julia-1.0.0\bin\LLVM.dll (unknown line)
_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE at C:\Users\%USERNAME%\Julia-1.0.0\bin\LLVM.dll (unknown line)
operator() at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\jitlayers.cpp:481
addModule at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/usr/include/llvm/ExecutionEngine/Orc\IRCompileLayer.h:57 [inlined]
addModule at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\jitlayers.cpp:608
jl_add_to_ee at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\jitlayers.cpp:855 [inlined]
jl_finalize_function at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\jitlayers.cpp:863
getAddressForFunction at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\codegen.cpp:1299
jl_generate_fptr at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\codegen.cpp:1410
jl_compile_method_internal at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:1821 [inlined]
jl_fptr_trampoline at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:1828
jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:2182
jl_apply at /home/Administrator/buildbot/worker/package_win64/build/src\julia.h:1536 [inlined]
jl_f__apply at /home/Administrator/buildbot/worker/package_win64/build/src\builtins.c:556
jl_f__apply_latest at /home/Administrator/buildbot/worker/package_win64/build/src\builtins.c:594
#invokelatest#1 at .\essentials.jl:686 [inlined]
invokelatest at .\essentials.jl:685 [inlined]
#27 at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\LineEdit.jl:1319
jl_fptr_trampoline at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:1829
jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:2182
prompt! at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\LineEdit.jl:2353
run_interface at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\LineEdit.jl:2256
jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:2182
run_frontend at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:1029
run_repl at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:191
jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:2182
#720 at .\logging.jl:311
unknown function (ip: 00000000258F0E74)
jl_fptr_trampoline at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:1829
jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:2182
jl_apply at /home/Administrator/buildbot/worker/package_win64/build/src\julia.h:1536 [inlined]
jl_f__apply at /home/Administrator/buildbot/worker/package_win64/build/src\builtins.c:556
jl_f__apply_latest at /home/Administrator/buildbot/worker/package_win64/build/src\builtins.c:594
#invokelatest#1 at .\essentials.jl:686 [inlined]
invokelatest at .\essentials.jl:685 [inlined]
macro expansion at .\logging.jl:308 [inlined]
run_main_repl at .\client.jl:330
exec_options at .\client.jl:242
_start at .\client.jl:421
jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src\gf.c:2182
jl_apply at /home/Administrator/buildbot/worker/package_win64/build/src\julia.h:1536 [inlined]
true_main at /home/Administrator/buildbot/worker/package_win64/build/ui\repl.c:112
wmain at /home/Administrator/buildbot/worker/package_win64/build/ui\repl.c:233
__tmainCRTStartup at /usr/src/debug/mingw64-x86_64-runtime-5.0.3-1/crt\crtexe.c:329
mainCRTStartup at /usr/src/debug/mingw64-x86_64-runtime-5.0.3-1/crt\crtexe.c:212
BaseThreadInitThunk at C:\Windows\system32\kernel32.dll (unknown line)
RtlUserThreadStart at C:\Windows\SYSTEM32\ntdll.dll (unknown line)
Allocations: 1392096 (Pool: 1391770; Big: 326); GC: 2
LLVM ERROR: starting new .cfi frame before finishing the previous one

@JeffBezanson
Copy link
Member

Dup of #26026.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arrays [a, r, r, a, y, s] bug Indicates an unexpected problem or unintended behavior
Projects
None yet
Development

No branches or pull requests

4 participants