rem: t->fault_handler = NULL;
add: t->fault_handler = 0;
context: create_thread_struct(const char *name){	struct thread *t;	int state;	char temp[64];	state = disable_interrupts();	GRAB_THREAD_LOCK();	t = thread_dequeue(&dead_q);	RELEASE_THREAD_LOCK();	restore_interrupts(state);	if (t == NULL) {		t = (struct thread *)malloc(sizeof(struct thread));		if (t == NULL)			goto err;	}	strncpy(&t->name[0], name, SYS_MAX_OS_NAME_LEN-1);	t->name[SYS_MAX_OS_NAME_LEN-1] = 0;	t->id = atomic_add(&next_thread_id, 1);	t->team = NULL;	t->cpu = NULL;	t->sem_blocking = -1;	t->fault_handler = NULL;	t->page_faults_allowed = 1;	t->kernel_stack_region_id = -1;	t->kernel_stack_base = 0;	t->user_stack_region_id = -1;	t->user_stack_base = 0;	t->team_next = NULL;	t->q_next = NULL;	t->priority = -1;	t->args = NULL;	t->sig_pending = 0;	t->sig_block_mask = 0;	memset(t->sig_action, 0, 32 * sizeof(struct sigaction));	t->in_kernel = true;	t->user_time = 0;	t->kernel_time = 0;	t->last_time = 0;	t->return_code = 0;	t->return_flags = 0;	sprintf(temp, "thread_0x%lx_retcode_sem", t->id);	t->return_code_sem = create_sem(0, temp);	if (t->return_code_sem < 0)		goto err1;	sprintf(temp, "%s data write sem", t->name);	t->msg.write_sem = create_sem(1, temp);	if (t->msg.write_sem < 0)		goto err2;	sprintf(temp, "%s data read sem", t->name);	t->msg.read_sem = create_sem(0, temp);	if (t->msg.read_sem < 0)		goto err3;	if (arch_thread_init_thread_struct(t) < 0)		goto err4;	return t;err4:	delete_sem_etc(t->msg.read_sem, -1, false);err3:	delete_sem_etc(t->msg.write_sem, -1, false);err2:	delete_sem_etc(t->return_code_sem, -1, false);err1:	free(t);err:	return NULL;}