![gson](/assets/img/avatar_default.png)
the value fusubail in the pcb_onfault field of the wrong process if a profiling timer interrupt happened to occur inside cpu_switch() at a point where curproc had been updated to point to the new process but curpcb still pointed to the old one. trap() would then fail to ignore any page fault in fuswintr/suswintr and the system would lock up. This bug only affected systems with kern_clock.c 1.72 or newer, as earlier versions only call addupc_intr from interrupts that occur in user mode. Fixed by assigning to curproc->p_addr->u_pcb.pcb_onfault instead of curpcb->pcb_onfault, as the former is what trap() checks.
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
Description
No description provided
Languages
C
85.3%
Roff
7.2%
Assembly
3.1%
Shell
1.7%
Makefile
1.2%
Other
0.9%