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