# Can print affect the behavior of a script?

**URL:** <https://discourse.julialang.org/t/can-print-affect-the-behavior-of-a-script/20526>\
**Category:** General Usage\
**Created:** [February 7, 2019, 12:03am UTC](https://discourse.julialang.org/t/can-print-affect-the-behavior-of-a-script/20526 "2019-02-07T00:03:37Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![maxtremblay](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maxtremblay/32/1369_2.png) [@maxtremblay](https://discourse.julialang.org/u/maxtremblay)\
**Post date:** [February 7, 2019, 12:03am UTC](https://discourse.julialang.org/t/can-print-affect-the-behavior-of-a-script/20526/1 "2019-02-07T00:03:37Z")

</div>

Hi everyone,

I have a really strange problem. I have a simulation software that I’m developing. When I run my tests, the results may change depending on what I print. An example will be clearer I suppose.

I run my tests using `Julia run_tests.jl`. Consider this function

```julia
function convert_to_left_site(mat::AbstractMatrix{Float64}, n_p_edges::Int, p_size::Int, l_size::Int)
    println("-----------")
    println(typeof(mat))
    println(length(mat), " ", p_size, " ", n_p_edges, " ", l_size)
    r_size = div(length(mat), (p_size^n_p_edges) * l_size)
    return Site(reshape(mat, fill(p_size, n_p_edges)..., l_size, r_size))
end

```

I have different results if I comment (or remove) different lines. If I comment nothing I get

```julia
-----------
Array{Float64,2}
0 3 1 0

```

If I comment only the first `println` I get

```julia
Array{Float64,2}
9 3 1 1

```

And if I comment only the second `println` I get

```julia
-----------
3 3 1 1

```

The rest of the code may work or not depending on those values. Also, this function is always call by the same function before using the same inputs.

Here is the whole code if you want more info. The function is defined at line 82 of the file `site.jl`.

[https://github.com/maxtremblay35/TNPolarCodes](https://github.com/maxtremblay35/TNPolarCodes)

Thanks,

Maxime

---

<div class="post-metadata">

**Author:** ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)\
**Post date:** [February 7, 2019, 12:25am UTC](https://discourse.julialang.org/t/can-print-affect-the-behavior-of-a-script/20526/2 "2019-02-07T00:25:03Z")

</div>

This is the kind of behavior I’m used to seeing in C++ when I accidentally invoke undefined behavior (like reading or writing off the end of a vector, for example). Such things are also possible in Julia (albeit much less common because Julia’s default behaviors are safer), but it’s hard to know without more information. What inputs do you use to invoke that function to get the varying outputs?

---

<div class="post-metadata">

**Author:** ![maxtremblay](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maxtremblay/32/1369_2.png) [@maxtremblay](https://discourse.julialang.org/u/maxtremblay)\
**Post date:** [February 7, 2019, 9:33pm UTC](https://discourse.julialang.org/t/can-print-affect-the-behavior-of-a-script/20526/3 "2019-02-07T21:33:54Z")

</div>

Technically, the inputs should be  
`mat` is a 3 by 3 matrix of Float64  
`n_p_edges` is 1  
`p_size` is 3  
`l_size` is 1.

If I print anything in the function that invoke `convert_to_left_site`, the input are always corrects. If I don’t print before, I get a 0 by 0 matrix as input instead.

I’ve tried to get to the top of the call stack to see where the errors appear first, but every time I tried to print something or change a part of the code, it works. Thus, I don’t know where is the source of the errors.

Finally, I observed the same behavior if I add a random line of code such as `x = 2`. If I comment this line, some errors appears, if not, the result is good.

---

<div class="post-metadata">

**Author:** ![maxtremblay](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maxtremblay/32/1369_2.png) [@maxtremblay](https://discourse.julialang.org/u/maxtremblay)\
**Post date:** [February 7, 2019, 9:52pm UTC](https://discourse.julialang.org/t/can-print-affect-the-behavior-of-a-script/20526/4 "2019-02-07T21:52:05Z")

</div>

Also, here is the `run_test.jl` file

```julia
include("../Sources/main.jl")
using Test

x = 2
include("matrix_prob_state.jl")

```

Everything work fine this way and I get

```julia
julia Tests/run_tests.jl
Test Summary: | Pass Total
MatrixProbState | 6 6

```

But, if I comment the `x = 2` line. I get some errors

```julia
julia Tests/run_tests.jl
MatrixProbState: Error During Test at /Users/maximetremblay/Git/Doctorat/TNPolarCodes/Tests/matrix_prob_state.jl:1
  Got exception outside of a @test
  DivideError: integer division error
  Stacktrace:
   [1] div at ./int.jl:232 [inlined]
   [2] convert_to_left_site(::Array{Float64,2}, ::Int64, ::Int64, ::Int64) at /Users/maximetremblay/Git/Doctorat/TNPolarCodes/Sources/site.jl:86
   [3] left_truncate(::Site{3}, ::Site{3}, ::Int64) at /Users/maximetremblay/Git/Doctorat/TNPolarCodes/Sources/site.jl:126
   [4] left_canonical_form!(::MatrixProbState) at /Users/maximetremblay/Git/Doctorat/TNPolarCodes/Sources/matrix_prob_state.jl:39
   [5] top-level scope at /Users/maximetremblay/Git/Doctorat/TNPolarCodes/Tests/matrix_prob_state.jl:5
   [6] top-level scope at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/Test/src/Test.jl:1083
   [7] top-level scope at /Users/maximetremblay/Git/Doctorat/TNPolarCodes/Tests/matrix_prob_state.jl:2
   [8] include at ./boot.jl:326 [inlined]
   [9] include_relative(::Module, ::String) at ./loading.jl:1038
   [10] include(::Module, ::String) at ./sysimg.jl:29
   [11] include(::String) at ./client.jl:403
   [12] top-level scope at none:0
   [13] include at ./boot.jl:326 [inlined]
   [14] include_relative(::Module, ::String) at ./loading.jl:1038
   [15] include(::Module, ::String) at ./sysimg.jl:29
   [16] exec_options(::Base.JLOptions) at ./client.jl:267
   [17] _start() at ./client.jl:436
Test Summary: | Error Total
MatrixProbState | 1 1
ERROR: LoadError: LoadError: Some tests did not pass: 0 passed, 0 failed, 1 errored, 0 broken.

```
