The exception likely occurs because of using "redirect" while the blocking AGV is currently idle. It will make the AGV move, however it won't create a task sequence, which in turn probably causes an exception when the AGV arrives at the redirect destination.
If, instead of redirecting, you create a task sequence for the AGV to travel to the destination this won't occur.
Another issue seems to be that you use "agv.accumAheadAGV" to get a reference to the blocking AGV. However, if the blocking AGV is situated on a different path, sufficiently far ahead of the current AGV, this command will return NULL. So I would recommend to get a reference to the blocking AGV through other means. In the attached model I use the nodes that link the cp to the AGV (cp -> allocations -> AGV reference in navigator -> AGV). There might be a nicer way to do this, but it works for now.
pushBlockerAGV.fsm