Fixed segfault in traced process when receiving a signal

Specifically, when a signal was received while enabling a breakpoint
diff --git a/sysdeps/linux-gnu/trace.c b/sysdeps/linux-gnu/trace.c
index f348fc8..a90d46a 100644
--- a/sysdeps/linux-gnu/trace.c
+++ b/sysdeps/linux-gnu/trace.c
@@ -197,13 +197,25 @@
 
 void
 continue_after_signal(pid_t pid, int signum) {
-	/* We should always trace syscalls to be able to control fork(), clone(), execve()... */
-	ptrace(PTRACE_SYSCALL, pid, 0, signum);
+	struct process *proc;
+
+	proc = pid2proc(pid);
+	if (proc && proc->breakpoint_being_enabled) {
+#if defined __sparc__  || defined __ia64___
+		ptrace(PTRACE_SYSCALL, pid, 0, signum);
+#else
+		ptrace(PTRACE_SINGLESTEP, pid, 0, signum);
+#endif
+	} else {
+		ptrace(PTRACE_SYSCALL, pid, 0, signum);
+	}
 }
 
 void
 continue_process(pid_t pid) {
-	continue_after_signal(pid, 0);
+	/* We always trace syscalls to control fork(), clone(), execve()... */
+
+	ptrace(PTRACE_SYSCALL, pid, 0, 0);
 }
 
 void