datetime exception 0xC0000008 JRE 1.4 windows

From: Michael Tomlinson (mjt_at_NOSPAM.invetech.com.au)
Date: 03/03/04


Date: Wed, 3 Mar 2004 13:53:32 +1100

I finally resolved this issue and though I would share it here to hopefully
prevent anyone else from going through the same pain!

In Australia, daylight savings is supposed to end at 2am on the last sunday
of march.

Microsoft seem a little confused about this; on my PC the
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time
Zones\AUS Eastern Standard Time] key had
"TZI"=hex:a8,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,03,00,00,00,05,00,03,00,
00,\
  00,00,00,00,00,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00
which sais 3am, but
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\TimeZoneInformation]
"DaylightStart"=hex:00,00,0a,00,05,00,02,00,00,00,00,00,00,00,00,00
sais 2am.

Now, some bugs:
I was calling JAVAs date to string routine, which I found (using
sysinternals regmon) was first reading the
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\TimeZoneInformation] key
and then examining each of the
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time
Zones\] keys to find a match.

Now on my workmates PC, it found and matched the "AUS Eastern Standard Time"
timezone, because both keys had 3am.

On my PC, they didn't match, so it continued searching through all the
timezones, didn't find a match, and then did something a little odd; it
issued a RegCloseKey on a NULL handle.

The MS documentation sais that RegCloseKey will return an error code, but it
actually emits a windows structured exception 0xC0000008 - bad handle.
This exception goes up through the JAVA and kills the program - but only
under the debugger. 0xC00000008 is ignored when running outside the
debugger.

Since we have the Java JVM (1.42) running inside a C++ program (using
LoadLibrary and dynamic binding) I'm guessing that not too many people have
encountered this one before, and it's probably unique to Australia too,
unless there's other timecodes that MS isn't so sure about.... hard for me
to verify!

Anyway I set my registry so that it was consistent, and the problem
dissapeared.
Only took me about a day to figure all this out :-(

Either the MS code shouldn't throw the exception, or the documentation needs
to be update; if the exception remains then the JAVA runtime probably needs
to be updated to not call RegCloseKey(0) anyway...

Mike

http://www.jsiinc.com/SUBA/tip0300/rh0398.htm

http://www.thrashmaster.com/developer/msbugs/bug1.htm

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/regclosekey.asp



Relevant Pages

  • Re: datetime exception 0xC0000008 JRE 1.4 windows
    ... > sais 2am. ... because both keys had 3am. ... > This exception goes up through the JAVA and kills the program - but only ...
    (comp.lang.java.programmer)
  • Re: CMutex /CEvent (multiple threads)
    ... deals with exception detection. ...  If your function does not handle an exception in Java, ... designer did not understand what a Mutex was and that the notion that Lock could return ... ...roll back transaction ...
    (microsoft.public.vc.mfc)
  • =?iso-8859-1?q?Re:_Beyond_Java_Tiger_-_Defekte_und_L=FCcken_in_Java?=
    ... > synchronized-Block erweitert und dann eine Bibliothek für Threads zur ... man kann nicht sicher mehrere locks requiren ... > Java machen kann, wenn man denn will. ... > eine Exception soll abgefangen werden damit ich noch ein CleanUp machen ...
    (de.comp.lang.java)
  • Re: contracted exceptions
    ... The Java experience shows that compiler checked exception ... violated exception contract caused Program_Error to be raised, the original, ...
    (comp.lang.ada)
  • Re: Dravid and Chappell AGREED and PUBLICLY SAID they got the BEST TEAM for WC2007
    ... contemporaries in matches v Australia, with the exception of Brian ... predict the fall of India batting under trying conditions. ... In fact, a whole lot of cricketers in world cricket, Ponting ...
    (rec.sport.cricket)