                             (when @active (storm-conf TASK-HEARTBEAT-FREQUENCY-SECS))
                             )
                           :priority Thread/MAX_PRIORITY
-                          :kill-fn report-error)
+                          :kill-fn report-error-and-die)
 
         stream->component->grouper (outbound-components topology-context)
         component->tasks (reverse-map task-info)

        task-stats (mk-task-stats task-object (sampling-rate storm-conf))

        report-error (fn [error]
                       (.report-task-error storm-cluster-state storm-id task-id error)
                       (halt-process! 1 "Task died!"))

        ;; heartbeat ASAP so nimbus doesn't reassign
        heartbeat-thread (async-loop

                                              storm-active-atom topology-context
                                              task-stats report-error)]
                          (async-loop (fn [] (exec) (when @active 0))
                                      :kill-fn report-error-and-die))
        system-threads [heartbeat-thread]
        all-threads  (concat executor-threads system-threads)]
    (reify
