eddy147
Once in a while I get a :noproc error:
** (stop) exited in: GenServer.call({:via, Registry, {:trip_generation_server, "804194805327673"}}, :send_to_processing, 5000)
** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started
(elixir 1.14.2) lib/gen_server.ex:1027: GenServer.call/3
(vehicle_processing 0.1.0) lib/vehicle_processing/processor.ex:1243: VehicleProcessing.Processor.run_trip_generation_server/3
(stdlib 4.2) gen_server.erl:1161: :gen_server.try_terminate/3
(stdlib 4.2) gen_server.erl:1351: :gen_server.terminate/10
(stdlib 4.2) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: :check_end_of_processing
State: %VehicleProcessing.Processor.State{vehicle: nil, unique_identifier: "804194805327673", data_start_at: nil, data_stop_at: nil, last_active_at: ~U[2023-10-30 10:30:47.181818Z], parking_notification_sent: false, driver_id: %{ibutton: nil, log: nil, permission: nil}, gps_based_properties: %{distance: nil, speed: nil, time: nil}, sent_vehicle_start_trigger?: false, at_least_one_non_heartbeat_message?: true, messages: [], timer: #Reference<0.3285835207.3288072193.194993>, geofences: [], previous_trip_point: nil, gps_reference: nil, previous_state_of_charge: nil, notifications_sent: %{battery_level_low: nil, battery_range_low: nil, battery_state_of_charge_low: nil}, gps_send: 1}
I start the TripGenerationServer dynamically:
defp run_trip_generation_server(state, f, tries) do
if tries > 0 do
case Registry.lookup(:trip_generation_server, state.unique_identifier) do
[] ->
case TripGenerationServerSupervisor.start_child(state.unique_identifier) do
{:ok, _pid} ->
f.(state)
e ->
Logger.warning(
"Can not start TripGenerationServer #{state.unique_identifier}: #{inspect(e)}"
)
Process.sleep(200)
run_trip_generation_server(state, f, tries - 1)
end
[{_pid, _nil}] ->
f.(state)
end
else
Logger.error("Can not startTripGenerationServer #{state.unique_identifier}")
end
state
end
And I get the :noproc error when
[{_pid, _nil}] ->
f.(state)
defmodule VehicleProcessing.TripGenerationServerSupervisor do
@moduledoc false
use DynamicSupervisor
require Logger
alias VehicleProcessing.TripGenerationServer
def start_link(_) do
Logger.info("start #{__MODULE__}")
DynamicSupervisor.start_link(__MODULE__, [], name: __MODULE__)
end
def start_child(unique_identifier) do
child_spec = %{
id: TripGenerationServer,
start: {TripGenerationServer, :start, [unique_identifier]},
# the child process is restarted only if it terminates abnormally,
# i.e., with an exit reason other than :normal, :shutdown, or {:shutdown, term}
restart: :transient,
shutdown: :brutal_kill,
type: :worker,
modules: [TripGenerationServer]
}
DynamicSupervisor.start_child(__MODULE__, child_spec)
end
@impl true
def init([]) do
DynamicSupervisor.init(strategy: :one_for_one)
end
end
How is this possible?
It also happens sometimes in a test, and when I run the test again, the error does not appear; or it appears in another test, totally random.
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #elixirconf-eu
- #metaprogramming
- #hex










Showing Posts 1 to 4- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
dimitarvp
At least in test env it’s possible the process is exiting before the test completes?
eddy147
That also sometimes happens, but in this case I get {:ok, pid} but still the :noprocess error.
I did not show this in my question, but in my init/1 function of the TripGenerationServer a query to the DB was called:
should_send_to_processing?(imei)is a call to the DB.
I removed that, and not seen the error again in my tests.
So is it possible that we get {:ok, pid} back already before the init/1 function is complete?
dimitarvp
Oh, don’t do that. I am not sure that’s your problem but always do these with
handle_continue!Also a piece from
handle_calldocs:al2o3cr
One thought:
TripGenerationServerSupervisor.start_childwill return the child PID as soon as the process is started, but a call using aviatuple won’t succeed until the child process has registered (presumably using code inTripGenerationServer)The error you’re seeing could happen if the callback passed to
run_trip_generation_server“wins the race” and tries to make a call too early.