meow
meow

Reputation: 28164

Zombie Processes Appearing When I Spawn Processes

I have a pieces of code where i spawn off children processes to make it more efficient. However, they appear to create all sorts of zombie processes which block sockets and bring down the site.

spawn(:method => :thread) do
   if @login_user.suggested_group_info.new_record?
       xxx
   end
end

1) Why is this creating zombie processes? 2) How could i write the code such that i make sure i kill the process before it becomes a zombie?

Upvotes: 6

Views: 2204

Answers (2)

Pete Brumm
Pete Brumm

Reputation: 1696

You can also trap for the child shutdown which will clean up the zombie process

trap("CLD") {
  pid = Process.wait
  puts "Child pid #{pid}: terminated"
}

Upvotes: 2

Daniel Newby
Daniel Newby

Reputation: 2432

You have to save the PID of the spawned process and execute the waitpid(2) system call upon it after it dies. (I don't know how Ruby does this.)

Upvotes: 4

Related Questions