Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 196956
Collapse All | Expand All

(-)src-trace/org/eclipse/hyades/loaders/trace/XMLmonContendedEnterLoader.java (-20 / +20 lines)
Lines 119-126 Link Here
119
			  evt.setThread(theThread);
119
			  evt.setThread(theThread);
120
			  evt.setTime( createDeltaTime());
120
			  evt.setTime( createDeltaTime());
121
			  evt.setLockingThread( lockingThread );
121
			  evt.setLockingThread( lockingThread );
122
			  TRCThreadDeadLockEvent contagious = (TRCThreadDeadLockEvent)wfls.get(0);
122
			  if (wfls.get(0) instanceof TRCThreadDeadLockEvent) {
123
			  evt.setNextDeadLockEvent( contagious );
123
				  TRCThreadDeadLockEvent contagious = (TRCThreadDeadLockEvent)wfls.get(0);
124
				  evt.setNextDeadLockEvent( contagious );
125
			  }
124
			  addCopyOfAnnotationsIfRequired(evt);
126
			  addCopyOfAnnotationsIfRequired(evt);
125
			  events.add( evt );
127
			  events.add( evt );
126
			  new_deadlock = true;
128
			  new_deadlock = true;
Lines 226-232 Link Here
226
	      return false;
228
	      return false;
227
	    }
229
	    }
228
	  }
230
	  }
229
	  return false;
231
	  return true;
230
	}    
232
	}    
231
	private boolean checkCircularLock( ArrayList wfls, int start_index )
233
	private boolean checkCircularLock( ArrayList wfls, int start_index )
232
	{
234
	{
Lines 326-348 Link Here
326
	      Object lt_last_event = lt_events.get( lt_events.size()-1);
328
	      Object lt_last_event = lt_events.get( lt_events.size()-1);
327
	      if( !(lt_last_event instanceof TRCThreadDeadLockEvent )) continue;
329
	      if( !(lt_last_event instanceof TRCThreadDeadLockEvent )) continue;
328
	      TRCThreadDeadLockEvent dl = (TRCThreadDeadLockEvent)lt_last_event;
330
	      TRCThreadDeadLockEvent dl = (TRCThreadDeadLockEvent)lt_last_event;
329
	      if( wfl.getTime() >= dl.getTime() )
331
330
	      {
332
	      //this wfl must be replaced by a deadlock !
331
	        //this wfl must be replaced by a deadlock !
333
	      events.remove( events.size()-1 );
332
	        events.remove( events.size()-1 );
334
		  //replace wfl by a deadlock:
333
			//replace wfl by a deadlock:
335
		  TRCThreadDeadLockEvent evt = TraceFactory.eINSTANCE.createTRCThreadDeadLockEvent();
334
			TRCThreadDeadLockEvent evt = TraceFactory.eINSTANCE.createTRCThreadDeadLockEvent();
336
		  evt.setLockedObject( wfl.getLockedObject() );
335
			evt.setLockedObject( wfl.getLockedObject() );
337
		  evt.setThread( thread );
336
			evt.setThread( thread );
338
		  evt.setTime( wfl.getTime() );
337
			evt.setTime( wfl.getTime() );
339
		  evt.setLockingThread( lockingThread );
338
			evt.setLockingThread( lockingThread );
340
		  evt.setNextDeadLockEvent( dl );
339
			evt.setNextDeadLockEvent( dl );
341
		  addCopyOfAnnotationsIfRequired(evt);
340
			addCopyOfAnnotationsIfRequired(evt);
342
		  events.add( evt );
341
			events.add( evt );
343
		  dl_added = true;
342
			dl_added = true;
344
		  //as another loop is required: do it right now!
343
			//as another loop is required: do it right now!
345
		  break;
344
			break;
345
	      }
346
	    }
346
	    }
347
	  }
347
	  }
348
	}
348
	}

Return to bug 196956