Don't queue sysret events

- That's because on s390x, we use process call stack to actually figure out
  whether it's a syscall/sysret event, and if it's sysret, then what syscall
  it returns from.  So we need to keep the stack in sync with reality.
diff --git a/handle_event.c b/handle_event.c
index f56c537..e527c0f 100644
--- a/handle_event.c
+++ b/handle_event.c
@@ -70,7 +70,9 @@
 
 		/* Note: the previous handler has a chance to alter
 		 * the event.  */
-		if (event->proc->leader != NULL) {
+		if (event->proc != NULL
+		    && event->proc->leader != NULL
+		    && event->proc != event->proc->leader) {
 			event = call_handler(event->proc->leader, event);
 			if (event == NULL)
 				return;
@@ -454,7 +456,7 @@
 			enable_all_breakpoints(event->proc);
 		}
 	}
-	continue_process(event->proc->pid);
+	continue_after_syscall(event->proc, event->e_un.sysnum, 0);
 }
 
 static void
@@ -533,9 +535,12 @@
 			output_right(LT_TOF_SYSCALLR, event->proc,
 					sysname(event->proc, event->e_un.sysnum));
 		}
+		assert(event->proc->callstack_depth > 0);
+		unsigned d = event->proc->callstack_depth - 1;
+		assert(event->proc->callstack[d].is_syscall);
 		callstack_pop(event->proc);
 	}
-	continue_process(event->proc->pid);
+	continue_after_syscall(event->proc, event->e_un.sysnum, 1);
 }
 
 static void