# Elixir function doesn't continue if takes too long

**URL:** <https://forum.elixirforum.com/t/elixir-function-doesnt-continue-if-takes-too-long/61457>\
**Category:** Questions\
**Tags:** troubleshooting, learning-elixir, function\
**Created:** [February 5, 2024, 11:47am UTC](https://forum.elixirforum.com/t/elixir-function-doesnt-continue-if-takes-too-long/61457 "2024-02-05T11:47:36Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![lud](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/32/14382_2.png) [@lud](https://forum.elixirforum.com/u/lud)\
**Post date:** [February 5, 2024, 6:14pm UTC](https://forum.elixirforum.com/t/elixir-function-doesnt-continue-if-takes-too-long/61457/7 "2024-02-05T18:14:59Z")

</div>

Also what you can do is register your process to give it a name:

```elixir
def func do
  Process.register(self(), :hello)
  convert_video.(1280)
  IO.puts("Conversion done, starting to upload")
end

```

Then start your app with `iex` (like `iex -S mix phx.server` if using Phoenix) and run a single long conversion (otherwise process registration will clash), and once you see in the OS that it is finished, you can call this in IEx:

```elixir
pid = Process.whereis(:hello)

```

This will return a pid, or `nil`. If it returns `nil` it means that your function either crashed silently, for some reason, or completed but you could not see the output of `IO.puts` for some reason (but it _was_ executed as Robert says).

If you get a pid, then your process is still awaiting something, or looping forever somewhere. You can then call this in IEx shell:

```elixir
Process.info(pid, :current_stacktrace)

```

This will show what is that process doing at the moment.

For instance if for some reason the process is still awaiting a return from a system command, you may see this:

```elixir
iex(7)> pid = spawn(fn -> System.cmd("watch", ["sleep", "1000"]) end)
#PID<0.116.0>
iex(8)> Process.info(pid, :current_stacktrace)
{:current_stacktrace,
 [
   {System, :do_port_byte, 3, [file: ~c"lib/system.ex", line: 1118]},
   {System, :do_cmd, 3, [file: ~c"lib/system.ex", line: 1107]},
   {:elixir, :eval_external_handler, 3, [file: ~c"src/elixir.erl", line: 396]}
 ]}

```

---

_[View the full topic](https://forum.elixirforum.com/t/elixir-function-doesnt-continue-if-takes-too-long/61457)._
