Hmm... I don't know why it picks up SystemV/CST6CDT while the detected time zone ID is America/Chicago.

Bill, could you set the TZ environment variable to "America/Chicago" and run a jre to see what happens?

Thanks,
Masayoshi

On 12/3/2009 5:54 AM, Bill Tims (RSI) wrote:
 Andrew

    I've signed up and hopefully this will show up on the list.
    The program is attached.  I ran it, with test2(), with strace and grep'd 
for javazi and got:

6205  stat64("/usr/share/javazi/ZoneInfoMappings", 0xb7328d4c) = -1 ENOENT (No 
such file or directory)
...
6205  access("/usr/lib/jvm/java-6-openjdk/jre/lib/zi/SystemV/CST6CDT", R_OK) = 0
6205  stat64("/usr/lib/jvm/java-6-openjdk/jre/lib/zi/SystemV/CST6CDT", 
{st_mode=S_IFREG|0644, st_size=2288, ...}) = 0
6205  open("/usr/lib/jvm/java-6-openjdk/jre/lib/zi/SystemV/CST6CDT", 
O_RDONLY|O_LARGEFILE) = 5
......
6205  read(5, "javazi\0\1\4\10\240\377\337\332\340\35\300\0!\377\340;"..., 
2288) = 2288

If I read this right it is using the CST6CDT file to get the incorrect results. 
 I'd rather not update the entire jre if I don't have to.  Everything else is 
working file...so far.

Bill Tims
Renaissance Systems, Inc.
5426 Guadalupe, Suite 100
Austin, TX  78751
512-275-0344
-----Original Message-----
From: gnu.andrew.ro...@gmail.com [mailto:gnu.andrew.ro...@gmail.com] On Behalf 
Of Andrew John Hughes
Sent: Wednesday, December 02, 2009 2:10 PM
To: Bill Tims (RSI)
Cc: Masayoshi Okutsu; i18n-dev@openjdk.java.net
Subject: Re: <i18n dev> Open Jdk Timezone bug?

2009/12/2 Bill Tims (RSI) <bt...@rsitex.com>:
Andrew/Masayoshi

  After some research it appears that we have the openjdk-6-jre-lib package, 
version b11, installed and it is current according to Ubuntu.

Ok, newer versions will also include the IcedTea version in java -version,

$ /home/andrew/build/icedtea6/bin/java -version java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.7pre-r1b34da20e2d1) (build 1.6.0_0-b17) 
OpenJDK 64-Bit Server VM (build 16.0-b10, mixed mode)

but I think those that use OpenJDK6 b11 are too old to do so.

The latest openjdk-6-jre has the same version number. Masayoshi indicates in an 
earlier email that the current version is 6u17.

The latest is b17, the number Masayoshi quotes sounds like a version of the 
proprietary JDK6 (as you are using on Windows, 6u7 in that
case) rather than an OpenJDK6 version.
It would be nice if such responses were posted to the public list...

When I run the app I wrote (I've added a dump of the version info from system 
properties) that displays the offset for America/Chicago for 1900 I get:
version=1.6.0_0
vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.version=1.6.0_0-b11
java.vm.vendor=Sun Microsystems Inc.
timezone.id=America/Chicago
date=Mon Jan 01 00:00:00 CDT 1900
1900/0:-18000000
1900/1:-18000000
1900/2:-18000000
1900/3:-18000000
1900/4:-18000000
1900/5:-18000000
1900/6:-18000000
1900/7:-18000000
1900/8:-18000000
1900/9:-18000000
1900/10:-21600000
1900/11:-21600000

The display is year/month#:offset.
The same program running under the Sun jdk on windows gives me:
version=1.6.0_07
vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.version=10.0-b23
java.vm.vendor=Sun Microsystems Inc.
timezone.id=America/Chicago
date=Mon Jan 01 00:00:00 CST 1900
1900/0:-21600000
1900/1:-21600000
1900/2:-21600000
1900/3:-21600000
1900/4:-21600000
1900/5:-21600000
1900/6:-21600000
1900/7:-21600000
1900/8:-21600000
1900/9:-21600000
1900/10:-21600000
1900/11:-21600000


Do you have a simple test case (probably creating a Date object and printing it 
would be enough)?
If you want to know what timezone data is actually being used, you can run 
something like strace -o out -f java TestApp and the resulting file, out, will 
show the C calls being made to open the timezone data files.
My guess is that the Ubuntu version uses /usr/share/javazi rather than the 
OpenJDK timezone data (which, for OpenJDK6, is very outdated - fixing that is 
on my TODO list).
This is due to the patch icedtea-use-system-tzdata.patch in IcedTea which 
contains:

+ SystemProperty* sp = Arguments::system_properties(); // Use the + system zoneinfo files, if present Arguments::PropertyList_add (&sp,
+                               new
SystemProperty("user.zoneinfo.dir", "/usr/share/javazi",true));
+

A newer version was submitted upstream but has not yet been approved:

http://mail.openjdk.java.net/pipermail/i18n-dev/2009-August/000136.html

(it's debatable whether such a fix is needed over just a simple symlink).

Bill

Bill Tims
Renaissance Systems, Inc.
5426 Guadalupe, Suite 100
Austin, TX  78751
512-275-0344


-----Original Message-----
From: gnu.andrew.ro...@gmail.com [mailto:gnu.andrew.ro...@gmail.com] On Behalf Of Andrew John Hughes
Sent: Wednesday, December 02, 2009 8:54 AM
To: Masayoshi Okutsu
Cc: Bill Tims (RSI); i18n-dev@openjdk.java.net
Subject: Re: <i18n dev> Open Jdk Timezone bug?

2009/12/1 Masayoshi Okutsu <masayoshi.oku...@sun.com>:
What is the time zone ID you are using?

Thanks,
Masayoshi

On 12/1/2009 1:55 AM, Bill Tims (RSI) wrote:
From what I can find, this appears to be the right place to post this, if I'm wrong I would appreciate a pointer to the proper location. The database our app has to talk to has January 1,1900 12:00:00 am date in it. When I load the value into a open jdk date object (using Ubuntu/JBoss 4.2.3 GA-jdk6) I get December 31, 1899 23:00:00. When I do the same thing on my dev box (Win XP/Sun jre 1.6.0_07) I get January 1, 1900 12:00:00 am. I wrote a test program that prints out the Timezone info for 1898-1902 and it appears that the open jdk has a daylight savings time starting on Jan 1, 1900 through Oct 1, 1900 and the sun version doesn't. According to Wikipedia, Daylight savings wasn't suggested until 1907. I can't find anything on the web that suggests where the timezone info is kept or how complicated it will be to rebuild whatever jar file is required. Can someone point me to the proper source file and suggest how involved building the fix will be?
 Thanks
   Bill
 !

Bill Tims

Renaissance Systems, Inc.



You don't give any details of the OpenJDK version - what does 'java -version' 
give on your Ubuntu box?
If this is the system OpenJDK build, then it's an IcedTea build and thus 
includes a patch to use the system timezone data which is likely to be more 
up-to-date than that bundled with Sun's JDK.
--
Andrew :-)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath
http://openjdk.java.net

PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint: F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8




--
Andrew :-)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK 
http://www.gnu.org/software/classpath
http://openjdk.java.net

PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint: F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8

Reply via email to