flock: Fix hang in object collision case
* flock.cc (lockf_t::create_lock_obj): Correctly recreate lock object attributes anew in each loop. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
		
							parent
							
								
									e6459123e4
								
							
						
					
					
						commit
						914620a7e6
					
				|  | @ -1,3 +1,8 @@ | ||||||
|  | 2015-11-12  Corinna Vinschen  <corinna@vinschen.de> | ||||||
|  | 
 | ||||||
|  | 	* flock.cc (lockf_t::create_lock_obj): Correctly recreate lock object | ||||||
|  | 	attributes anew in each loop. | ||||||
|  | 
 | ||||||
| 2015-11-12  Corinna Vinschen  <corinna@vinschen.de> | 2015-11-12  Corinna Vinschen  <corinna@vinschen.de> | ||||||
| 
 | 
 | ||||||
| 	* init.cc (munge_threadfunc): Don't call NtQueryInformationThread with | 	* init.cc (munge_threadfunc): Don't call NtQueryInformationThread with | ||||||
|  |  | ||||||
|  | @ -766,12 +766,12 @@ lockf_t::create_lock_obj () | ||||||
| { | { | ||||||
|   lockfattr_t attr; |   lockfattr_t attr; | ||||||
|   NTSTATUS status; |   NTSTATUS status; | ||||||
|  |   PSECURITY_DESCRIPTOR sd_buf = alloca (SD_MIN_SIZE); | ||||||
|   POBJECT_ATTRIBUTES lock_obj_attr; |   POBJECT_ATTRIBUTES lock_obj_attr; | ||||||
| 
 | 
 | ||||||
|   lock_obj_attr = create_lock_obj_attr (&attr, OBJ_INHERIT, |  | ||||||
| 					alloca (SD_MIN_SIZE)); |  | ||||||
|   do |   do | ||||||
|     { |     { | ||||||
|  |       lock_obj_attr = create_lock_obj_attr (&attr, OBJ_INHERIT, sd_buf); | ||||||
|       status = NtCreateEvent (&lf_obj, CYG_EVENT_ACCESS, lock_obj_attr, |       status = NtCreateEvent (&lf_obj, CYG_EVENT_ACCESS, lock_obj_attr, | ||||||
| 			      NotificationEvent, FALSE); | 			      NotificationEvent, FALSE); | ||||||
|       if (!NT_SUCCESS (status)) |       if (!NT_SUCCESS (status)) | ||||||
|  |  | ||||||
|  | @ -12,3 +12,8 @@ Bug Fixes | ||||||
| - The fix for wine introduced in 2.3.0 crashes in 32 bit Cygwin on 64 bit XP | - The fix for wine introduced in 2.3.0 crashes in 32 bit Cygwin on 64 bit XP | ||||||
|   and 64 bit Server 2003 only.   This should work now. |   and 64 bit Server 2003 only.   This should work now. | ||||||
|   Addresses: https://cygwin.com/ml/cygwin/2015-11/msg00187.html |   Addresses: https://cygwin.com/ml/cygwin/2015-11/msg00187.html | ||||||
|  | 
 | ||||||
|  | - The fix to avoid a potential crash in advisory file locking introduced in | ||||||
|  |   2.3.0 waas not entirely correct and failed to work in certain border cases. | ||||||
|  |   This should work now. | ||||||
|  |   Addresses: https://cygwin.com/ml/cygwin/2015-11/msg00189.html | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue