kdlogan19

kdlogan19

Hello everyone,

I am implementing a stack with Genserver, but I keep getting an error saying there is no process alive. Please go through the code below.

defmodule Stack.Server do
  use GenServer

  def start(_elements) do
      IO.puts "Hello"
      GenServer.start_link(__MODULE__, [4,5,"cool"])
    end

  def init(init_num) do
    {:ok, init_num}
  end


  def handle_call( _from,:pop,[h|t]) do
    IO.inspect [h|t]
    IO.inspect [t]
    IO.puts "handling call"
    {:reply, {:ok,h}, t}
  end

  def handle_cast({:push,value},state) do
    IO.inspect value
    IO.puts "handling cast"
    {:reply, {:ok,value}, [value|state]}
  end

  def pop(pid) do
      IO.puts "Inside popping stack"
      IO.inspect pid
       GenServer.call(:pops, pid)
   end

   def push(stack, item) do
     IO.puts "Inside pushing stack"
     GenServer.cast(stack,{:push,item})
   end

end

{:ok, pid} = Stack.Server.start [1,2,3]
Stack.Server.pop(pid)
Stack.Server.push(pid, 10)
Stack.Server.pop(pid)

And the error message says:

Compiling 2 files (.ex)
Hello
Inside popping stack
#PID<0.121.0>

== Compilation error in file lib/stack/server.ex ==
** (exit) exited in: GenServer.call(:pops, #PID<0.121.0>, 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) lib/gen_server.ex:999: GenServer.call/3

Thanks a lot in advance
PS: I am a beginner.

Showing Posts 1 to 8

peerreynders

peerreynders

Welcome to the forum!

GenServer.call(:pops, pid)

Have a look at GenServer.call/3

While you are there have a look at the GenServer stack example.

ityonemo

ityonemo

Double check

  1. your function parameter order on genserver.call
  2. your function matching order when you handle :pop
  3. your atom literals

Later, you’re gonna want to double check the spec on handle_cast.

kdlogan19

kdlogan19 OP

Thanks for replying.

Does matching order matters when we call the function?

kdlogan19

kdlogan19 OP

Thanks a lot, I have figured out some of the problems and divided the program into modules now.

peerreynders

peerreynders

Check the order of the arguments in your handle_call/3 callback function.

dokuzbir

dokuzbir

Yes order is important.

so this

def handle_call(:pop, _from, [h|t]) do
kdlogan19

kdlogan19 OP

yup, correct it. Thanks

ityonemo

ityonemo

I know some languages are more permissive, but elixir is sane, you can’t do def subtract(a, b) with an unexpected matching order.

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
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
nseaSeb
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
kpanic
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
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
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
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
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 Top

GenericJam
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
JesseHerrick
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
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
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
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews