Program: 103160
Project: 103160
Buggy source:
/** 
 * Called when this bundle is stopped so the Framework can perform the bundle-specific activities necessary to stop the bundle.
 * @param context The execution context of the bundle being stopped.
 * @throws Exception If this method throws an exception, the bundle isstill marked as stopped, and the Framework will remove the bundle's listeners, unregister all services registered by the bundle, and release all services used by the bundle.
 */
public void stop(BundleContext context) throws Exception {
  Thread shutdownTimeoutThread=new Thread(){
    public void run(){
synchronized (this) {
        try {
          long shutDownTimeout=SHUTDOWN_TIMEOUT_DEFAULT;
          try {
            String shutdownCustomValue=System.getProperty(SHUTDOWN_TIMEOUT_PROP);
            if (shutdownCustomValue != null && shutdownCustomValue.length() > 0) {
              long custom=Long.valueOf(shutdownCustomValue);
              if (custom > 0)               shutDownTimeout=custom;
            }
          }
 catch (          Throwable t) {
          }
          if (logger.isTraceEnabled())           logger.trace("String_Node_Str" + shutDownTimeout + "String_Node_Str");
          wait(shutDownTimeout);
          logger.error("String_Node_Str");
          System.exit(SYSTEM_EXIT_CODE);
        }
 catch (        InterruptedException ex) {
          if (logger.isDebugEnabled())           logger.debug("String_Node_Str");
        }
      }
    }
  }
;
  if (logger.isTraceEnabled())   logger.trace("String_Node_Str");
  shutdownTimeoutThread.setDaemon(true);
  shutdownTimeoutThread.start();
}

Fixed version (ground truth):
/** 
 * Called when this bundle is stopped so the Framework can perform the bundle-specific activities necessary to stop the bundle.
 * @param context The execution context of the bundle being stopped.
 * @throws Exception If this method throws an exception, the bundle isstill marked as stopped, and the Framework will remove the bundle's listeners, unregister all services registered by the bundle, and release all services used by the bundle.
 */
public void stop(BundleContext context) throws Exception {
  Thread shutdownTimeoutThread=new Thread(){
    public void run(){
synchronized (this) {
        try {
          long shutDownTimeout=SHUTDOWN_TIMEOUT_DEFAULT;
          try {
            String shutdownCustomValue=System.getProperty(SHUTDOWN_TIMEOUT_PROP);
            if (shutdownCustomValue != null && shutdownCustomValue.length() > 0) {
              long custom=Long.valueOf(shutdownCustomValue);
              if (custom > 0)               shutDownTimeout=custom;
            }
          }
 catch (          Throwable t) {
          }
          if (logger.isTraceEnabled())           logger.trace("String_Node_Str" + shutDownTimeout + "String_Node_Str");
          wait(shutDownTimeout);
          logger.error("String_Node_Str");
          Runtime.getRuntime().halt(SYSTEM_EXIT_CODE);
        }
 catch (        InterruptedException ex) {
          if (logger.isDebugEnabled())           logger.debug("String_Node_Str");
        }
      }
    }
  }
;
  if (logger.isTraceEnabled())   logger.trace("String_Node_Str");
  shutdownTimeoutThread.setDaemon(true);
  shutdownTimeoutThread.start();
}