JuliaGPU / JuliaGPU/ArrayFire.jl

ReadOnlyMemoryError() on ccall

Aperta
#147 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Julia
Stelle
207
Fork
33
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hello. After installing ArrayFire I'm facing ReadOnlyMemoryError() when I try to call AFInfo() or any other ArrayFire function interfacing with device (openCL backend on AMD card).

```
ERROR: ReadOnlyMemoryError()
in af_info() at /home/morodeer/.julia/v0.5/ArrayFire/src/wrap.jl:1192
in AFInfo() at /home/morodeer/.julia/v0.5/ArrayFire/src/utils.jl:116
```

where `wrap.jl:1192` is
```
err = ccall((:af_info, af_lib), Cint, () )
```

If I exit julia after that it tells me the following:

```
signal (11): Ошибка сегментирования
while loading no file, in expression starting on line 0
unknown function (ip: 0x7f2e017be539)
_ZN4llvm2cl19generic_parser_base10findOptionEPKc at /home/morodeer/Загрузки/julia-3c9d75391c/bin/../lib/julia/libLLVM-3.7.1.so (unknown line)
unknown function (ip: 0x7f2e00c2e2ec)
_ZN4llvm19MachinePassRegistry6RemoveEPNS_23MachinePassRegistryNodeE at /usr/lib/x86_64-linux-gnu/libLLVM-5.0.so.1 (unknown line)
__run_exit_handlers at /build/glibc-jxM2Ev/glibc-2.24/stdlib/exit.c:83
exit at /build/glibc-jxM2Ev/glibc-2.24/stdlib/exit.c:105
jl_exit at /home/centos/buildbot/slave/package_tarball64/build/src/jl_uv.c:551
exit at ./initdefs.jl:22
unknown function (ip: 0x7f2dfcbb6a48)
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:189 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1942
do_call at /home/centos/buildbot/slave/package_tarball64/build/src/interpreter.c:66
eval at /home/centos/buildbot/slave/package_tarball64/build/src/interpreter.c:190
jl_toplevel_eval_flex at /home/centos/buildbot/slave/package_tarball64/build/src/toplevel.c:558 [inlined]
jl_toplevel_eval at /home/centos/buildbot/slave/package_tarball64/build/src/toplevel.c:580
jl_toplevel_eval_in_warn at /home/centos/buildbot/slave/package_tarball64/build/src/builtins.c:590
eval at ./boot.jl:234
unknown function (ip: 0x7f2dfc9b54df)
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:189 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1942
eval_user_input at ./REPL.jl:64
unknown function (ip: 0x7f2bec4e30e6)
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:189 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1942
macro expansion at ./REPL.jl:95 [inlined]
#3 at ./event.jl:68
unknown function (ip: 0x7f2bec4dbf2f)
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:189 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1942
jl_apply at /home/centos/buildbot/slave/package_tarball64/build/src/julia.h:1392 [inlined]
start_task at /home/centos/buildbot/slave/package_tarball64/build/src/task.c:253
unknown function (ip: 0xffffffffffffffff)
Allocations: 1754492 (Pool: 1753569; Big: 923); GC: 0
Ошибка сегментирования (сделан дамп памяти)
```

Launching julia from gdb gives following:

```
julia> using ArrayFire
INFO: Recompiling stale cache file /home/morodeer/.julia/lib/v0.5/Compat.ji for module Compat.

julia> AFInfo()
[New Thread 0x7ffdd7d06700 (LWP 29549)]
[New Thread 0x7ffdd7505700 (LWP 29550)]
[New Thread 0x7ffdd2d04700 (LWP 29551)]

Thread 1 "julia" received signal SIGSEGV, Segmentation fault.
0x00007ffdc45abef8 in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-5.0.so.1
(gdb) where
#0 0x00007ffdc45abef8 in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-5.0.so.1
#1 0x00007ffff7de87ca in call_init (l=, argc=argc@entry=1, argv=argv@entry=0x7fffffffe028, env=env@entry=0x21c49b0) at dl-init.c:72
#2 0x00007ffff7de88db in call_init (env=0x21c49b0, argv=0x7fffffffe028, argc=1, l=) at dl-init.c:30
#3 _dl_init (main_map=main_map@entry=0x2de42e0, argc=1, argv=0x7fffffffe028, env=0x21c49b0) at dl-init.c:120
#4 0x00007ffff7ded866 in dl_open_worker (a=a@entry=0x7fffffffc160) at dl-open.c:575
#5 0x00007ffff7de8674 in _dl_catch_error (objname=objname@entry=0x7fffffffc150, errstring=errstring@entry=0x7fffffffc158,
mallocedp=mallocedp@entry=0x7fffffffc14f, operate=operate@entry=0x7ffff7ded510 , args=args@entry=0x7fffffffc160) at dl-error.c:187
#6 0x00007ffff7dece49 in _dl_open (file=0x2cf7f10 "libMesaOpenCL.so.1", mode=-2147483647, caller_dlopen=0x7ffdcc5ab2fb, nsid=-2, argc=,
argv=, env=0x21c49b0) at dl-open.c:660
#7 0x00007ffff75d1ee9 in dlopen_doit (a=a@entry=0x7fffffffc390) at dlopen.c:66
#8 0x00007ffff7de8674 in _dl_catch_error (objname=0x6253c0, errstring=0x6253c8, mallocedp=0x6253b8, operate=0x7ffff75d1e90 ,
args=0x7fffffffc390) at dl-error.c:187
#9 0x00007ffff75d2571 in _dlerror_run (operate=operate@entry=0x7ffff75d1e90 , args=args@entry=0x7fffffffc390) at dlerror.c:163
#10 0x00007ffff75d1f82 in __dlopen (file=, mode=) at dlopen.c:87
#11 0x00007ffdcc5ab2fb in ?? () from /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
#12 0x00007ffdcc5ab459 in ?? () from /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
#13 0x00007ffdcc5ab9e5 in ?? () from /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
#14 0x00007ffdcc5ac263 in clGetPlatformIDs () from /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
#15 0x00007ffdcd1eb484 in opencl::DeviceManager::DeviceManager() () from /usr/local/lib/libafopencl.so.3
#16 0x00007ffdcd1f15c2 in opencl::getDeviceInfo[abi:cxx11]() () from /usr/local/lib/libafopencl.so.3
#17 0x00007ffdcd9c6213 in af_info () from /usr/local/lib/libafopencl.so.3
#18 0x00007ffddf51fe10 in af_err unified::AFSymbolManager::call<>(char const*) () from /usr/local/lib/libaf.so
#19 0x00007ffddfc39eb0 in ?? ()
#20 0x00007fffffffcfc0 in ?? ()
#21 0x00007ffddfc39ce0 in ?? ()
#22 0x00007fffffffcfd0 in ?? ()
#23 0x00007ffddfc39d00 in ?? ()
#24 0x00007fffffffd070 in ?? ()
#25 0x00007ffff78116b0 in jl_call_method_internal (nargs=1, args=0x7fffffffd090, meth=0x7ffdf4298c70)
at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:210
#26 jl_apply_generic (args=0x7fffffffd090, nargs=) at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1950
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
```

versions:

```
julia> versioninfo()
Julia Version 0.5.1
Commit 6445c82 (2017-03-05 13:25 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.7.1 (ORCJIT, haswell)
```

```
julia> ArrayFire.getVersionNumber()
(3,5,0)
```

Tested both on 0.5.0 and 0.5.1

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia da src/wrap.jl:1192 e src/utils.jl:116, quindi riproduci AFInfo() con Julia 0.5.1, ArrayFire 3.5.0 e il backend OpenCL sulla configurazione Linux segnalata. Traccia la chiamata attraverso l’inizializzazione del dispositivo ArrayFire mostrata nel backtrace di gdb; il lavoro è completo quando AFInfo() e le altre chiamate al dispositivo non generano più ReadOnlyMemoryError né un segfault.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
julia
Ambito
backend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.