Skip to content

Commit f449754

Browse files
authored
CI: Run tests without ASLR (#162)
The boot images are built with the assumption that they will be loaded at a specific address. ASLR will cause some shared objects to be loaded at the addresses of the boot images, and the boot images will overwrite their sections, causing illegal instruction errors and other errors. This problem is easy to reproduce locally, and manifests very frequently when running on GitHub CI. This PR modifies CI scripts to mitigate the problem. It adds `setarch -R` before executing `rvm` to disable ASLR. This PR is a workaround. The proper fix is take control over the loading process and not let the system loader load shared objects in the address range of the boot image. Related issue: #158
1 parent 4535e00 commit f449754

6 files changed

+101
-101
lines changed

.github/scripts/ci-test-assertions-use-bind-ref-proc.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ cd $JIKESRVM_PATH
77

88
# RBaseBaseSemiSpaceAssertions
99
./bin/buildit localhost RBaseBaseSemiSpaceAssertions -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
10-
./dist/RBaseBaseSemiSpaceAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms400M -Xmx400M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
11-
./dist/RBaseBaseSemiSpaceAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms650M -Xmx650M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
10+
setarch -R ./dist/RBaseBaseSemiSpaceAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms400M -Xmx400M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
11+
setarch -R ./dist/RBaseBaseSemiSpaceAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms650M -Xmx650M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
1212

1313
# RBaseBaseMarkSweepAssertions
1414
./bin/buildit localhost RBaseBaseMarkSweepAssertions -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
15-
./dist/RBaseBaseMarkSweepAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms350M -Xmx350M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
16-
./dist/RBaseBaseMarkSweepAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms650M -Xmx650M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
15+
setarch -R ./dist/RBaseBaseMarkSweepAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms350M -Xmx350M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
16+
setarch -R ./dist/RBaseBaseMarkSweepAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms650M -Xmx650M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex

.github/scripts/ci-test-assertions.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ cd $JIKESRVM_PATH
77

88
# RBaseBaseSemiSpaceAssertions
99
./bin/buildit localhost RBaseBaseSemiSpaceAssertions -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
10-
./dist/RBaseBaseSemiSpaceAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms75M -Xmx75M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
11-
./dist/RBaseBaseSemiSpaceAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms75M -Xmx75M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
10+
setarch -R ./dist/RBaseBaseSemiSpaceAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms75M -Xmx75M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
11+
setarch -R ./dist/RBaseBaseSemiSpaceAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms75M -Xmx75M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
1212

1313
# RBaseBaseMarkSweepAssertions
1414
./bin/buildit localhost RBaseBaseMarkSweepAssertions -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
15-
./dist/RBaseBaseMarkSweepAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
16-
./dist/RBaseBaseMarkSweepAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
15+
setarch -R ./dist/RBaseBaseMarkSweepAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
16+
setarch -R ./dist/RBaseBaseMarkSweepAssertions_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex

.github/scripts/ci-test-normal-use-bind-ref-proc.sh

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,52 +17,52 @@ find "$PROPERTIES_DIR" -type f -name "*.properties" -exec sed -i 's/rust.binding
1717

1818
# RBaseBaseNoGC
1919
./bin/buildit localhost RBaseBaseNoGC -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
20-
./dist/RBaseBaseNoGC_x86_64_m32-linux/rvm -Xmx1224M -Xms1224M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
20+
setarch -R ./dist/RBaseBaseNoGC_x86_64_m32-linux/rvm -Xmx1224M -Xms1224M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
2121
# RBaseBaseSemiSpace
2222
./bin/buildit localhost RBaseBaseSemiSpace -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
23-
./dist/RBaseBaseSemiSpace_x86_64_m32-linux/rvm -Xmx400M -Xms400M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
23+
setarch -R ./dist/RBaseBaseSemiSpace_x86_64_m32-linux/rvm -Xmx400M -Xms400M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
2424

2525
# Test FastAdaptive builds
2626
# Run all possible dacapo benchmarks
2727

2828
# RFastAdaptiveNoGC (use largest heap possible)
2929
./bin/buildit localhost RFastAdaptiveNoGC -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
30-
./dist/RFastAdaptiveNoGC_x86_64_m32-linux/rvm -Xms3G -Xmx3G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar antlr
31-
./dist/RFastAdaptiveNoGC_x86_64_m32-linux/rvm -Xms3G -Xmx3G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
32-
./dist/RFastAdaptiveNoGC_x86_64_m32-linux/rvm -Xms3G -Xmx3G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
33-
./dist/RFastAdaptiveNoGC_x86_64_m32-linux/rvm -Xms3G -Xmx3G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar pmd
30+
setarch -R ./dist/RFastAdaptiveNoGC_x86_64_m32-linux/rvm -Xms3G -Xmx3G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar antlr
31+
setarch -R ./dist/RFastAdaptiveNoGC_x86_64_m32-linux/rvm -Xms3G -Xmx3G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
32+
setarch -R ./dist/RFastAdaptiveNoGC_x86_64_m32-linux/rvm -Xms3G -Xmx3G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
33+
setarch -R ./dist/RFastAdaptiveNoGC_x86_64_m32-linux/rvm -Xms3G -Xmx3G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar pmd
3434

3535
export MMTK_THREADS=16
3636

3737
# RFastAdaptiveSemiSpace
3838
./bin/buildit localhost RFastAdaptiveSemiSpace -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH/ --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
39-
./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms600M -Xmx600M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar antlr
40-
./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms1900M -Xmx1900M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar bloat
41-
#fail ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar eclipse
42-
./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms400M -Xmx400M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
43-
#fail ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms200M -Xmx200M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar hsqldb
44-
./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms2000M -Xmx2000M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar jython
45-
./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms900M -Xmx900M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
46-
#fail./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms75M -Xmx75M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar lusearch
47-
./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms1500M -Xmx1500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar pmd
48-
./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms1900M -Xmx1900M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar xalan
39+
setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms600M -Xmx600M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar antlr
40+
setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms1900M -Xmx1900M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar bloat
41+
#fail setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar eclipse
42+
setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms400M -Xmx400M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
43+
#fail setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms200M -Xmx200M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar hsqldb
44+
setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms2000M -Xmx2000M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar jython
45+
setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms900M -Xmx900M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
46+
#fail setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms75M -Xmx75M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar lusearch
47+
setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms1500M -Xmx1500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar pmd
48+
setarch -R ./dist/RFastAdaptiveSemiSpace_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms1900M -Xmx1900M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar xalan
4949

5050
# RFastAdaptiveMarkSweep
5151
./bin/buildit localhost RFastAdaptiveMarkSweep -j $JAVA_HOME --answer-yes --use-third-party-heap=$BINDING_PATH/ --use-third-party-build-configs=$BINDING_PATH/jikesrvm/build/configs --use-external-source=$BINDING_PATH/jikesrvm/rvm/src --m32
52-
./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms400M -Xmx400M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar antlr
52+
setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms400M -Xmx400M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar antlr
5353

5454
# Flaky test: Failing instruction starting at xxxxx wasn't in RVM address space
5555
# see https://github.com/mmtk/mmtk-jikesrvm/issues/108
56-
#./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar bloat
56+
#setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar bloat
5757

5858
# Failing instruction offset: 0x000000c3 in method ___ with descriptor ___ Couldn't find a method for given instruction offset
59-
#./dist/RFastAdaptiveMarkSweep_x86_64-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar eclipse
60-
./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms350M -Xmx350M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
61-
#fail./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms300M -Xmx300M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar hsqldb
62-
./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms1100M -Xmx1100M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar jython
63-
./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms650M -Xmx650M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
64-
#fail./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar lusearch
65-
./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms800M -Xmx800M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar pmd
66-
./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms900M -Xmx900M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar xalan
59+
#setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar eclipse
60+
setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms350M -Xmx350M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
61+
#fail setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms300M -Xmx300M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar hsqldb
62+
setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms1100M -Xmx1100M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar jython
63+
setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms650M -Xmx650M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
64+
#fail setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms150M -Xmx150M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar lusearch
65+
setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms800M -Xmx800M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar pmd
66+
setarch -R ./dist/RFastAdaptiveMarkSweep_x86_64_m32-linux/rvm $RVM_OPTIONS -Xms900M -Xmx900M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar xalan
6767

6868
find "$PROPERTIES_DIR" -type f -name "*.properties" -exec sed -i 's/rust.binding_side_ref_proc=true/rust.binding_side_ref_proc=false/' {} \;

0 commit comments

Comments
 (0)