Program: 75864
Project: 75864
Buggy source:
/** 
 * Initialize/Reinitialize audio resources. First stop playback, and close any open sound files, if necessary. Then reread all parameters, create a new SoundPlayback object, and start playback of audio. <p> This method is synchronized since it is not safe to call SoundPlayback methods while this method is executing.
 * @exception IllegalActionException If there is a problem initializingaudio playback.
 */
private synchronized void _initializePlayback() throws IllegalActionException, IOException {
  if (_debugging)   _debug("String_Node_Str");
  if (LiveSound.isPlaybackActive()) {
    LiveSound.stopPlayback(this);
  }
  if (_debugInfo) {
    System.out.println("String_Node_Str" + "String_Node_Str" + _putSampleSize);
  }
  for (int i=0; i < _channels; i++) {
    _audioPutArray[i]=new double[_putSampleSize];
  }
  int sampleRateInt=((IntToken)sampleRate.getToken()).intValue();
  int bitsPerSampleInt=((IntToken)bitsPerSample.getToken()).intValue();
  int channelsInt=((IntToken)channels.getToken()).intValue();
  if (LiveSound.getSampleRate() != sampleRateInt) {
    LiveSound.setSampleRate(sampleRateInt);
  }
  if (LiveSound.getBitsPerSample() != bitsPerSampleInt) {
    LiveSound.setBitsPerSample(bitsPerSampleInt);
  }
  if (LiveSound.getChannels() != channelsInt) {
    LiveSound.setChannels(channelsInt);
  }
  if (LiveSound.getBufferSize() != 4096) {
    LiveSound.setBufferSize(4096);
  }
  if (LiveSound.getTransferSize() != _putSampleSize) {
    LiveSound.setTransferSize(_putSampleSize);
  }
  LiveSound.startPlayback(this);
  _curElement=0;
}

Fixed version (ground truth):
/** 
 * Initialize/Reinitialize audio resources. First stop playback, and close any open sound files, if necessary. Then reread all parameters, create a new SoundPlayback object, and start playback of audio. <p> This method is synchronized since it is not safe to call SoundPlayback methods while this method is executing.
 * @exception IllegalActionException If there is a problem initializingaudio playback.
 */
private synchronized void _initializePlayback() throws IllegalActionException, IOException {
  if (_debugging)   _debug("String_Node_Str");
  if (LiveSound.isPlaybackActive()) {
    throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
  }
  if (_debugInfo) {
    System.out.println("String_Node_Str" + "String_Node_Str" + _putSampleSize);
  }
  for (int i=0; i < _channels; i++) {
    _audioPutArray[i]=new double[_putSampleSize];
  }
  int sampleRateInt=((IntToken)sampleRate.getToken()).intValue();
  int bitsPerSampleInt=((IntToken)bitsPerSample.getToken()).intValue();
  int channelsInt=((IntToken)channels.getToken()).intValue();
  if (LiveSound.getSampleRate() != sampleRateInt) {
    LiveSound.setSampleRate(sampleRateInt);
  }
  if (LiveSound.getBitsPerSample() != bitsPerSampleInt) {
    LiveSound.setBitsPerSample(bitsPerSampleInt);
  }
  if (LiveSound.getChannels() != channelsInt) {
    LiveSound.setChannels(channelsInt);
  }
  if (LiveSound.getBufferSize() != 4096) {
    LiveSound.setBufferSize(4096);
  }
  if (LiveSound.getTransferSize() != _putSampleSize) {
    LiveSound.setTransferSize(_putSampleSize);
  }
  LiveSound.startPlayback(this);
  _curElement=0;
}