Hi,
> -----Original Message-----
> From: Alan Bateman [mailto:[email protected]]
> Sent: Thursday, March 12, 2020 5:40 PM
> To: Yangfei (Felix) <[email protected]>; [email protected]
> Subject: Re: RFR(S): 8240734: ModuleHashes attribute not reproducible
> between builds
>
> On 12/03/2020 09:30, Yangfei (Felix) wrote:
> > So for the hashed to be stored in A, we may need relations like: B requires
> > A,
> and C requires A. Am I right?
> >
> Right, I see there was a typo in my mail, sorry about that. It might help to
> draw
> the DAG and then reverse the edges to easily identify the modules where the
> hashes will be stored.
>
We did a quick try with three modules. The new test is uploaded to [1].
Two problems here:
a> hash values are different for two different test run. This is illustrate
in [2]. I think this is introduced by the SHA-256 algorithm.
I didn't mention that our local consistency check is carried out in a
specialized environment which avoids such a problem.
This means we cannot compare the jmod files with Files.mismatch directly in
regular testing environment.
b> Looks like the reported issue cannot be reproduced by a small number of
modules. We tried [1] many times and it seems that the order of the two module
hashes is stable.
Note: java.base module records hashes of 67 other modules.
Suggestions?
[1]
https://bugs.openjdk.java.net/secure/attachment/87281/ModuleHashOrderTest.java
[2]
Classfile
/home/sunjianye/openjdk13-community/jdk/JTwork/scratch/jmods-first/cl|
Classfile /home/sunjianye/openjdk13-community/jdk/JTwork/scratch/jmods-second/
Last modified Mar 12, 2020; size 399 bytes
| Last modified Mar 12, 2020; size 399 bytes
SHA-256 checksum
1a8ea671cd45ffb96287d690e383a0f80303111ac51519271a097007b8e0| SHA-256
checksum b7b0ce1af32eb74d2185e4feced2f25ae23ef2b3830b1fe2b7471ba9b34
Compiled from "module-info.java"
| Compiled from "module-info.java"
module ma
| module ma
minor version: 0
| minor version: 0
major version: 57
| major version: 57
flags: (0x8000) ACC_MODULE
| flags: (0x8000) ACC_MODULE
this_class: #2 // "module-info"
| this_class: #2 // "module-info"
+ +-- 51 lines: super_class:
+ +#0--------------------------------------------------|+ +-- 51 lines:
+ +super_class: #0-------------------------------------------------
#17 // src.ma
| #17 // src.ma
ModuleHashes:
| ModuleHashes:
algorithm: #25 // SHA-256
| algorithm: #25 // SHA-256
2 // hashes
| 2 // hashes
#27 // mb
| #27 // mb
hash_length: 32
| hash_length: 32
hash: [633a60ff4fa542d082dba41ced181633385574c6a801c843a23538559b63c239]
| hash: [951bb41ce54aa1bc93edde4226eeaf38d73f6a54b9e9e150c73e8a48d109de57]
#29 // mc
| #29 // mc
hash_length: 32
| hash_length: 32
hash: [815cb047f93ec3d22ae2889d32a7f687e00b41507abbb1b66a27d87c5c38459a]
| hash: [e2c37c902bf8b84ebbb11a765b365ba0fc241772596a8e4091e0345d596a86e5]