An open Synthesizer or Sequencer will crash in 3hrs, 22min
In all cases, the machine is frozen and must be restarted.
This problem appears to manifest only when running "Windows 98 Second Edition".
On this platform the behavior is 100% reproducible.
This behavior has been reproduced on a second machine also running "Windows 98 Second Edition".
This behavior occurs with both jdk1.3 & jdk1.4.
This problem appears not to manifest on any other configuration tested.
Other configurations tested are:
01. Same machine running Windows 98 (not second edition)
02. Same machine running Windows 2000
03. Same machine running Windows NT
This problem appears not to manifest on any Solaris configurations.
Also note that on the configurations which do not exhibit this behavior, the tests ran for 24 hours and never crashed.
Both of the interfaces, (Synthesizer & Sequencer) are derived from "MidiDevice" and inherit its "open" method
When getDeviceInfo is called on instances of Sequencer and Synthesizer, the following info is returned:
(Note that this same info is returned for both crashing and non-crashing configurations.)
Sequencer
Description: Software sequencer / synthesizer module
Name: Java Sound Sequencer
Vendor: Sun Microsystems
Version: Version 1.0
Synthesizer
Description: Software wavetable synthesizer and receiver
Name: Java Sound Synthesizer
Vendor: Sun Microsystems
Version: Version 1.0
When memory usage was tracked, it appeared that the problem is not memory related.
Free memory was actually higher at the time of the crash.
The following info was gathered:
Start Of Test: Total Memory: 2031616, Free Memory: 1605264
Crash Time: Total Memory: 2031616, Free Memory: 1718320
This problem appears to be time related.
It's interesting to note the consistency of the elapsed time to crash of different test runs:
Test Run 01: Elapsed Time: 3:22:51
Test Run 02: Elapsed Time: 3:22:51
Test Run 03: Elapsed Time: 3:22:56
Test Run 04: Elapsed Time: 3:22:55
Test Run 05: Elapsed Time: 3:22:48
This behavior can be reproduced using the following code:
___________________________________________________________
try
{
Sequencer theSequencer = MidiSystem.getSequencer();
if(!(theSequencer.isOpen()))
theSequencer.open();
Thread.sleep(3600000 * 4); // 4 hours
theSequencer.close();
}
catch (Exception ex) { ex.printStackTrace(); }
___________________________________________________________
###@###.### 2000-06-15