# Segmentation fault in dot function

**URL:** <https://discourse.julialang.org/t/segmentation-fault-in-dot-function/47308>\
**Category:** General Usage\
**Tags:** question\
**Created:** [September 26, 2020, 11:39am UTC](https://discourse.julialang.org/t/segmentation-fault-in-dot-function/47308 "2020-09-26T11:39:23Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![nebula](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nebula/32/18214_2.png) [@nebula](https://discourse.julialang.org/u/nebula)\
**Post date:** [September 26, 2020, 11:39am UTC](https://discourse.julialang.org/t/segmentation-fault-in-dot-function/47308/1 "2020-09-26T11:39:23Z")

</div>

Code :

```julia
using LinearAlgebra

function main()
    len = 100000
    a = rand(Float64, len)
    b = rand(Float64, len)
    for i in 1:len
        u = @view a[1:i]
        b = b .- b[1]
        v = @view b[i:-1:1]
        b[i] = dot(u, v)
    end
end

main()

```

When running this code, I got segmentation fault.

```julia
signal (11): Segmentation fault
in expression starting at /home/nebula/test.jl:15
dot_compute at /home/nebula/julia/bin/../lib/julia/libopenblas64_.so (unknown line)
dot_thread_function at /home/nebula/julia/bin/../lib/julia/libopenblas64_.so (unknown line)
legacy_exec at /home/nebula/julia/bin/../lib/julia/libopenblas64_.so (unknown line)
exec_blas at /home/nebula/julia/bin/../lib/julia/libopenblas64_.so (unknown line)
blas_level1_thread_with_return_value at /home/nebula/julia/bin/../lib/julia/libopenblas64_.so (unknown line)
ddot_k_HASWELL at /home/nebula/julia/bin/../lib/julia/libopenblas64_.so (unknown line)
dot at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/blas.jl:320
dot at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/blas.jl:369
dot at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/matmul.jl:9 [inlined]
main at /home/nebula/test.jl:11
unknown function (ip: 0x7fb5c5a236bc)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2231 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2398
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1690 [inlined]
do_call at /buildworker/worker/package_linux64/build/src/interpreter.c:117
eval_value at /buildworker/worker/package_linux64/build/src/interpreter.c:206
eval_stmt_value at /buildworker/worker/package_linux64/build/src/interpreter.c:157 [inlined]
eval_body at /buildworker/worker/package_linux64/build/src/interpreter.c:566
jl_interpret_toplevel_thunk at /buildworker/worker/package_linux64/build/src/interpreter.c:660
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:840
jl_parse_eval_all at /buildworker/worker/package_linux64/build/src/ast.c:913
jl_load_rewrite at /buildworker/worker/package_linux64/build/src/toplevel.c:914
include at ./Base.jl:380
include at ./Base.jl:368
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2214 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2398
exec_options at ./client.jl:296
_start at ./client.jl:506
jfptr__start_60376.clone_1 at /home/nebula/julia/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2214 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2398
unknown function (ip: 0x401931)
unknown function (ip: 0x401533)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x4015d4)
Allocations: 805278 (Pool: 805145; Big: 133); GC: 1004
Segmentation fault

```

When I change `b = b .- b[1]` to `@. b = b - b[1]` or remove `@view` or decrease `len`, the code will run without segmentation fault.  
What’s the reason of segmentation fault? (Segmentation fault occurs in `dot` function)

---

<div class="post-metadata">

**Author:** ![mcabbott](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mcabbott/32/6603_2.png) [@mcabbott](https://discourse.julialang.org/u/mcabbott)\
**Post date:** [September 26, 2020, 12:05pm UTC](https://discourse.julialang.org/t/segmentation-fault-in-dot-function/47308/2 "2020-09-26T12:05:22Z")

</div>

Something weird is happening with `dot`, simpler examples:

```julia
julia> using LinearAlgebra

julia> dot(ones(10), view(ones(10), 1:10))
10.0

julia> dot(ones(10), view(ones(10), 10:-1:1))
1.0

julia> [dot(ones(10), view(ones(10), 10:-1:1)) for _ in 1:5, _ in 1:10]
5×10 Array{Float64,2}:
 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
 1.0 1.0 1.0 1.0 1.0 1.0 1.16189e165 1.0 1.0 1.0
 1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.52324e180 1.0 1.0
 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
 1.0 1.0 1.0 1.0 2.52324e180 1.0 1.0 1.0 1.0 1.0

julia> view(ones(10), 10:-1:1) isa StridedArray
true

```

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [September 26, 2020, 12:11pm UTC](https://discourse.julialang.org/t/segmentation-fault-in-dot-function/47308/3 "2020-09-26T12:11:17Z")

</div>

Confirmed, even for 1.6. nightly. I would suggest opening an issue at [Issues · JuliaLang/julia · GitHub](https://github.com/JuliaLang/julia/issues)

---

<div class="post-metadata">

**Author:** ![nebula](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nebula/32/18214_2.png) [@nebula](https://discourse.julialang.org/u/nebula)\
**Post date:** [September 26, 2020, 12:32pm UTC](https://discourse.julialang.org/t/segmentation-fault-in-dot-function/47308/4 "2020-09-26T12:32:36Z")

</div>

OK. I have opened an issue at github. Link: [https://github.com/JuliaLang/julia/issues/37767](https://github.com/JuliaLang/julia/issues/37767)
