Understanding process links

So the supervisor you start in your application.ex uses the default of max 3 restarts within 5 seconds, before itself crashes. You’re doing 4 restarts per 5 seconds (restart A and B, wait 5 seconds and again restarting A and B). For :rest_for_one only the crashing ModuleB counts against that limit, not all the other processes restarted by the supervisor as a result of that crash.

Also unexpectedly to many people the root process of an application (the one you return the pid from c:Application.start/2) will never be restarted. It’s not a child of a supervisor and the application will stop as soon as the root pid crashes/stops.