Changes between Version 1 and Version 2 of Ticket #69, comment 6


Ignore:
Timestamp:
Jun 15, 2011, 6:36:07 PM (13 years ago)
Author:
dmik
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #69, comment 6

    v1 v2  
    33If there is only one version of JVM.DLL currently loaded into the system at step 1, everything is fine: when DosLoadModule() resolves the dependencies of JZIP.DLL at step 2, it finds this already loaded instance of JVM and uses it. But if there are two different versions of JVM.DLL already in memory, DosLoadModule() seems to simply pick up the one loaded first which is not always right.
    44
    5 For example, if there is a Java application running in -server mode, it has already loaded the server verison of JVM.DLL. When you then attempt to start another application in -client mode, the client version of JVM.DLL gets manually loaded at step 1, but when it comes to step 2, OS/2 picks up the server version of JVM.DLL (which was loaded first). This is obviously wrong because the second application clearly wants the client version (e.g. the one it loaded at step 1). Using the wrong DLL eventually leads to crashes when the server version of the DLL gets used (through JZIP and other libraries) because lots of the private DLL data objects of this server version (private to each process which loads JVM.DLL) are uninitialized.
     5For example, if there is a Java application running in -server mode, it has already loaded the server verison of JVM.DLL. When you then attempt to start another application in -client mode, the client version of JVM.DLL gets manually loaded at step 1, but when it comes to step 2, OS/2 picks up the server version of JVM.DLL (which was loaded first). This is obviously wrong because the second application clearly wants the client version (e.g. the one it loaded at step 1). Using the wrong DLL eventually leads to crashes when the server version of the DLL gets used in the second process (through JZIP and other libraries) because lots of the private DLL data objects of this server version are uninitialized in there (as the second process has already performed JVM initialization but on the client version of the DLL when first loading it).