# Strange problem with Julia embedding

**URL:** https://discourse.julialang.org/t/strange-problem-with-julia-embedding/11311
**Category:** New to Julia
**Tags:** question, ccall
**Created:** [May 31, 2018, 9:36pm UTC](https://discourse.julialang.org/t/strange-problem-with-julia-embedding/11311 "2018-05-31T21:36:02Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![mmmm1998](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mmmm1998/32/7799_2.png) [@mmmm1998](https://discourse.julialang.org/u/mmmm1998)
#### Post date: [May 31, 2018, 9:36pm UTC](https://discourse.julialang.org/t/strange-problem-with-julia-embedding/11311/1 "2018-05-31T21:36:02Z")

</div>

Well, I write this code to display varialbe during output rediraction

```julia
    jl_value_t *out_stream = static_cast<jl_value_t *>(jl_eval_string("STDOUT"));
    jl_function_t *text_display = jl_get_function(jl_base_module, "TextDisplay");
    jl_value_t *out_display = jl_call1(text_display, out_stream);
    jl_function_t *display = jl_get_function(jl_base_module, "display");
    jl_call2(display, out_display, val);

```

But `out_display` is null and `jl_call2` fails with segfault.  
But this code work and does the same:

```julia
    jl_value_t *out_display = static_cast<jl_value_t *>(jl_eval_string("TextDisplay(STDOUT)"));
    jl_function_t *display = jl_get_function(jl_base_module, "display");
    jl_call2(display, out_display, val);

```

Is it normal? As I understand, three lines of first code does the same, that first line of second code.

---

<div class="post-metadata">

### Author: ![jinliangwei](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jinliangwei/32/1929_2.png) [@jinliangwei](https://discourse.julialang.org/u/jinliangwei)
#### Post date: [June 1, 2018, 1:29am UTC](https://discourse.julialang.org/t/strange-problem-with-julia-embedding/11311/2 "2018-06-01T01:29:15Z")

</div>

Did you push out\_stream, out\_display, etc on to GC stack to avoid them being garbage collected?

```julia
  jl_value_t* value_jl = nullptr;
  jl_value_t* out_stream = nullptr;
  jl_value_t* out_display = nullptr;
  JL_GC_PUSH3(&out_stream, &out_display, &value_jl);
  value_jl = jl_box_float64(1.0);
  out_stream = static_cast<jl_value_t *>(jl_eval_string("STDOUT"));
  jl_function_t *text_display = jl_get_function(jl_base_module, "TextDisplay");
  out_display = jl_call1(text_display, out_stream);
  jl_function_t *display = jl_get_function(jl_base_module, "display");
  jl_call2(display, out_display, value_jl);
  JL_GC_POP();

```

The code above worked for me.

---

<div class="post-metadata">

### Author: ![mmmm1998](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mmmm1998/32/7799_2.png) [@mmmm1998](https://discourse.julialang.org/u/mmmm1998)
#### Post date: [June 1, 2018, 9:15pm UTC](https://discourse.julialang.org/t/strange-problem-with-julia-embedding/11311/3 "2018-06-01T21:15:03Z")

</div>

Well, sorry, but I forget to mention, that I use 0.4.7 Julia.  
And this code don’t work for me: out\_display is nullptr and julia produce segfault.  
So, I think, that this maybe old julia bug, that was fixed in modern versions.

---

<div class="post-metadata">

### Author: ![mmmm1998](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mmmm1998/32/7799_2.png) [@mmmm1998](https://discourse.julialang.org/u/mmmm1998)
#### Post date: [June 1, 2018, 9:26pm UTC](https://discourse.julialang.org/t/strange-problem-with-julia-embedding/11311/4 "2018-06-01T21:26:42Z")

</div>

I have tested your code on 0.6.3, it’s works.  
Thanks for answer!
