-
Notifications
You must be signed in to change notification settings - Fork 641
Open
Description
While debugging a separate issue, we ran into an assertion failure
hello[FATAL src/RecordTask.cc:1840:pop_event()]
(task 136189 (rec:136189) at time 254)
-> Assertion `pending_events.back().type() == expected_type' failed to hold.
Test case:
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
static void SEGV_handler(__attribute__((unused)) int sig,
__attribute__((unused)) siginfo_t* si,
__attribute__((unused)) void* context) {
alarm(1);
pause();
}
static void alarm_handler(__attribute__((unused)) int sig,
__attribute__((unused)) siginfo_t* si,
__attribute__((unused)) void* context) {
write(1, "hello", 5);
}
int main() {
int size = 8 * 0x4000;
void * stk_c = malloc(size);
stack_t stk = {stk_c, 0, size};
sigaltstack(&stk, 0);
struct sigaction sa1, sa2;
sa1.sa_sigaction = SEGV_handler;
sa1.sa_flags = SA_SIGINFO | SA_ONSTACK;
sigemptyset(&sa1.sa_mask);
sigaction(SIGSEGV, &sa1, NULL);
sa2.sa_sigaction = alarm_handler;
sa2.sa_flags = SA_SIGINFO | SA_ONSTACK;
sigemptyset(&sa2.sa_mask);
sigaction(SIGALRM, &sa2, NULL);
raise(SIGSEGV);
}Metadata
Metadata
Assignees
Labels
No labels