mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:32:46 +00:00 
			
		
		
		
	Kernel: Fix some issues related to fixes and block conditions
Fix some problems with join blocks where the joining thread block condition was added twice, which lead to a crash when trying to unblock that condition a second time. Deferred block condition evaluation by File objects were also not properly keeping the File object alive, which lead to some random crashes and corruption problems. Other problems were caused by the fact that the Queued state didn't handle signals/interruptions consistently. To solve these issues we remove this state entirely, along with Thread::wait_on and change the WaitQueue into a BlockCondition instead. Also, deliver signals even if there isn't going to be a context switch to another thread. Fixes #4336 and #4330
This commit is contained in:
		
							parent
							
								
									0918d8b1f8
								
							
						
					
					
						commit
						da5cc34ebb
					
				
					 22 changed files with 474 additions and 434 deletions
				
			
		|  | @ -381,9 +381,7 @@ PageFaultResponse Region::handle_zero_fault(size_t page_index_in_region) | |||
|     ASSERT_INTERRUPTS_DISABLED(); | ||||
|     ASSERT(vmobject().is_anonymous()); | ||||
| 
 | ||||
|     sti(); | ||||
|     LOCKER(vmobject().m_paging_lock); | ||||
|     cli(); | ||||
| 
 | ||||
|     auto& page_slot = physical_page_slot(page_index_in_region); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Tom
						Tom