Toba: Patch Information
From time to time as critical bugs are discovered, the Toba project will
release patches to the most recent distribution. While a reasonable effort
is made to ensure that the patches work on all platforms, they do not
undergo the full testing of a normal release. Generally, they have been
tested on Linux systems, and any other system that there's reason to believe
may be affected by the patch.
Patches are sometimes created relative to the base 1.1 distribution.
Version 1.1c, 13Apr99
The tar
file for version 1.1c contains source-level fixes for the following
problems:
- Everything in patch 1.1b.
- gc updated to 4.13 (final), now built from patch to original distribution
like the other supplementary systems. Version 1.1c is not provided in patch
format, because the previous gc directory must be completely eliminated.
- Linux system uses pthreads by default, instead of scout threads, allowing
timed waits and joins.
- Match JDK (classfile) order of results in the reflection methods that
return lists of fields/methods. Support for this changed the size of the
vt_generic and mt_generic structures: all object files must be rebuilt with
the new release.
- Fix problems with access to class variables through reflection without prior
class initialization.
- Serialization mishandled overrides of the readObject/writeObject method.
- Compression/decompression dropped data when decompressing files (including
class files) that exceeded an internal buffer size.
- Serialization values miscalculated due to extraneous flag bits, and
uninitialized exception lists in classes that had not been fully resolved.
- Fix problem where classes were internally identified only by name, causing
conflicts when the same class was loaded multiple times through different
class loaders. Now classes are named by both name and an associated loader.
- Fix problem with wakeups in various thread packages (the notification
supposed to go to certain threads was sometimes stolen by others).
Version 1.1b, 04Dec98
The patch
and tar
files for version 1.1b contain source-level fixes for the following
problems:
- Everything in patch 1.1a.
-
java.lang.reflect
support completely rewritten to match
JDK behavior, and implement Method.invoke()
. The method
invocation is written in semi-portable C, rather than platform-specific
code. Methods with no more than two parameters (three for static methods),
or with no more than 12 parameters all the same size as a java object
pointer, should work on both x86/Linux and SPARC/Solaris. There are some
problems with passing/returning primitive types on Irix.
- Bugs allocating multidimensional arrays in jit'd code are fixed.
- The exception thrown when operating on closed file or socket descriptors
should now match JDK (a subclass of IOException rather than a
NullPointerException).
- Instantiating an uninstantiable class generates the correct exception.
Patch 1.1b also introduced the following bugs:
- Synchronized method invocation may hang on an Irix 6.5 system. If
anybody cares to figure out why and let us know a patch, we'd appreciate it.
Version 1.1a, 30Oct98
The patch file for version
1.1a contains source-level fixes for the following problems:
- Serialization problems were fixed by the following three changes:
- The computed serialVersionUID of jit'd classes differed from Sun's
calculation.
- Looking up array classes with Class.forName was not supported with the
JIT enabled.
- Field and method resolution when a jit'd subclass overloads a superclass
is not completely correct. One particular instance of this caused
initialization of sun.security.provider.Sun to segfault, breaking
serialization. This error has been fixed, but there are still cases
where overloading a static variable (method) method with an instance
variable (method) of the same name and signature will result in incorrect
execution. A proper fix for this involves a major restructuring of Toba,
and is not currently scheduled for attention.
- Constant value conflicts between JDK and the host system for socket
options like SO_LINGER have been resolved.
- A missing undocumented system property that was required to match JDK's
behavior when converting Unicode strings to byte arrays has been added.
- The path to X11 libraries on Linux when building --with-biss has been
updated to what may be a more standard location.
- The driver script was updated to prefer the rebuilt BISS classes to the
standard ones; if you're building with BISS, you need this patch.
- The default behavior of Toba is now to not run finalizers on exit,
matching JDK's behavior. The
System.RunFinalizersOnExit(boolean)
method is now supported to
change this.
Toba home page