Skip to content

Repair tools mismatch #30

@jose

Description

@jose

Hi @tdurieux,

I have been debugging the root cause of some errors/exceptions thrown by some repair tools and I noticed that the binaries provided by the RTA infrastructure do not match the ones build from each official repository. For instance, there is one class named fr.inria.lille.repair.synthesis.collect.spoon.SuspiciousExpressionCollector in the provided nopol.jar file which does not exist in the official repository of the Nopol framework. Also, the following classes:

fr.inria.spirals.npefix.resi.PatchActivation
fr.inria.spirals.npefix.resi.ICSE2018$1
fr.inria.spirals.npefix.resi.ICSE2018$InheritanceModel
fr.inria.spirals.npefix.resi.AresDataset
fr.inria.spirals.npefix.resi.PatchActivationImpl
fr.inria.spirals.npefix.resi.PatchActivationListener
fr.inria.spirals.npefix.resi.ICSE2018
fr.inria.spirals.npefix.resi.WebsocketClient

do not exist in the official repository of the NPEFix framework but exist in the provided npefix.jar file.

Could you please double check whether the commit ids listed in here are indeed the ones you used? (Note: it is known the commit id of NPEFix and Arja is incorrect.)

--
Best,
Jose


Please find below a step-by-step to identify which provided jar files are not based on the commit ids described in here.

$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

$ mvn --version
Apache Maven 3.5.0 (Red Hat 3.5.0-4.3)

$ md5sum --version
md5sum (GNU coreutils) 8.22

$ mkdir "/tmp/repair_tools"

Nopol

$ mkdir "/tmp/repair_tools/nopol"

Get official Nopol

$ mkdir "/tmp/repair_tools/nopol/official"
$ cd "/tmp/repair_tools/nopol/official"
$ git clone https://github.com/SpoonLabs/nopol.git repository
$ cd "/tmp/repair_tools/nopol/official/repository/nopol"
$ git checkout 7ba58a78d099530e8f40d1d2b3b4531756f698c5
$ mvn package -DskipTests
$ cp "/tmp/repair_tools/nopol/official/repository/nopol/target/nopol-0.2-SNAPSHOT-jar-with-dependencies.jar" "/tmp/repair_tools/nopol/official/nopol.zip"
$ cd "/tmp/repair_tools/nopol/official"
$ unzip "nopol.zip"

Get RTA Nopol

$ mkdir "/tmp/repair_tools/nopol/rta"
$ cd "/tmp/repair_tools/nopol/rta"
$ curl -OL https://raw.githubusercontent.com/program-repair/RepairThemAll/master/repair_tools/nopol.jar
$ mv "nopol.jar" "nopol.zip"
$ unzip "nopol.zip"

RTA Nopol vs Official Nopol

$ cd "/tmp/repair_tools/nopol"

$ find rta/fr/inria/lille -type f | while read -r file; do \
    rta=$(md5sum "$file" | cut -f1 -d' '); \
    official=$(md5sum $(echo "$file" | sed 's|rta/|official/|g') | cut -f1 -d' '); \
    if [ "$rta" != "$official" ]; then \
      echo "$file :: $rta vs $official"; \
    fi; \
  done

md5sum: official/fr/inria/lille/repair/synthesis/collect/spoon/SuspiciousExpressionCollector.class: No such file or directory
rta/fr/inria/lille/repair/synthesis/collect/spoon/SuspiciousExpressionCollector.class :: 7a9c23ebf915f343d3224271de04cf2d vs
rta/fr/inria/lille/repair/synthesis/DynamothCodeGenesisImpl$1.class :: 5b9f3427b3ba13cc16d60e0a06f53547 vs bac9fd304ed80e1ed0ea601a92068c2e
rta/fr/inria/lille/repair/synthesis/DynamothCodeGenesisImpl$2.class :: 0af943457665cae3832346a5865a343d vs 6f12c943b7f5052cd815ec8dbabe62be
rta/fr/inria/lille/repair/synthesis/DynamothCodeGenesisImpl.class :: 366c7c5888abc76aa7ca7bf88beefee8 vs a029457dcb9169f54ae26b28ecc0311a

$ find rta/sacha -type f | while read -r file; do \
    rta=$(md5sum "$file" | cut -f1 -d' '); \
    official=$(md5sum $(echo "$file" | sed 's|rta/|official/|g') | cut -f1 -d' '); \
    if [ "$rta" != "$official" ]; then \
      echo "$file :: $rta vs $official"; \
    fi; \
  done


$ find rta/xxl/java -type f | while read -r file; do \
    rta=$(md5sum "$file" | cut -f1 -d' '); \
    official=$(md5sum $(echo "$file" | sed 's|rta/|official/|g') | cut -f1 -d' '); \
    if [ "$rta" != "$official" ]; then \
      echo "$file :: $rta vs $official"; \
    fi; \
  done

rta/xxl/java/junit/TestCasesListener.class :: ccd90101337d5da0d22948486370723b vs 9bba2c6082bc75cd94e7201b0213a64c

NPEFix

$ mkdir "/tmp/repair_tools/npefix"

Get official NPEFix

Note: As suggested in here, the script below checkouts commit id 00f977ec20e8b16672610706cfd330c9dcaeedd1.

$ mkdir "/tmp/repair_tools/npefix/official"
$ cd "/tmp/repair_tools/npefix/official"
$ git clone https://github.com/SpoonLabs/npefix.git repository
$ cd "/tmp/repair_tools/npefix/official/repository"
$ git checkout 00f977ec20e8b16672610706cfd330c9dcaeedd1
$ mvn package -DskipTests
$ cp "/tmp/repair_tools/npefix/official/repository/target/npefix-0.8-SNAPSHOT-jar-with-dependencies.jar" "/tmp/repair_tools/npefix/official/npefix.zip"
$ cd "/tmp/repair_tools/npefix/official"
$ unzip "npefix.zip"

Get RTA NPEFix

$ mkdir "/tmp/repair_tools/npefix/rta"
$ cd "/tmp/repair_tools/npefix/rta"
$ curl -OL https://raw.githubusercontent.com/program-repair/RepairThemAll/master/repair_tools/npefix.jar
$ mv "npefix.jar" "npefix.zip"
$ unzip "npefix.zip"

RTA NPEFix vs Official NPEFix

$ cd "/tmp/repair_tools/npefix"

$ find rta/utils -type f | while read -r file; do \
    rta=$(md5sum "$file" | cut -f1 -d' '); \
    official=$(md5sum $(echo "$file" | sed 's|rta/|official/|g') | cut -f1 -d' '); \
    if [ "$rta" != "$official" ]; then \
      echo "$file :: $rta vs $official"; \
    fi; \
  done


$ find rta/fr/inria/spirals/npefix -type f | while read -r file; do \
    rta=$(md5sum "$file" | cut -f1 -d' '); \
    official=$(md5sum $(echo "$file" | sed 's|rta/|official/|g') | cut -f1 -d' '); \
    if [ "$rta" != "$official" ]; then \
      echo "$file :: $rta vs $official"; \
    fi; \
  done

rta/fr/inria/spirals/npefix/resi/context/Lapse.class :: e4e44fde333c7bf96fc2fa37d4872408 vs 73580faeead094d389c087f37ab73a10
md5sum: official/fr/inria/spirals/npefix/resi/PatchActivation.class: No such file or directory
rta/fr/inria/spirals/npefix/resi/PatchActivation.class :: ec8a2900ce9ce5822ad26dc700f191e9 vs
md5sum: official/fr/inria/spirals/npefix/resi/ICSE2018$1.class: No such file or directory
rta/fr/inria/spirals/npefix/resi/ICSE2018$1.class :: 8f7be932a946c9a19db53cdfeb957675 vs
rta/fr/inria/spirals/npefix/resi/NPEFixTemplateEvaluation.class :: 5ec33151ab56b534c7c78124ecb02a0a vs d8b079f5bd868cf49411399b40e78777
md5sum: official/fr/inria/spirals/npefix/resi/ICSE2018$InheritanceModel.class: No such file or directory
rta/fr/inria/spirals/npefix/resi/ICSE2018$InheritanceModel.class :: 35f3d5ef1396748c29fcb7e569e7e89e vs
md5sum: official/fr/inria/spirals/npefix/resi/AresDataset.class: No such file or directory
rta/fr/inria/spirals/npefix/resi/AresDataset.class :: 86170e178bebff6d55ef6a93672b5b03 vs
md5sum: official/fr/inria/spirals/npefix/resi/PatchActivationImpl.class: No such file or directory
rta/fr/inria/spirals/npefix/resi/PatchActivationImpl.class :: c8fe744ab5e6ee1447cddc4fe5f9afab vs
md5sum: official/fr/inria/spirals/npefix/resi/PatchActivationListener.class: No such file or directory
rta/fr/inria/spirals/npefix/resi/PatchActivationListener.class :: d7bea8a894ce6b8d806fd82d0bd1aa6a vs
md5sum: official/fr/inria/spirals/npefix/resi/ICSE2018.class: No such file or directory
rta/fr/inria/spirals/npefix/resi/ICSE2018.class :: 977eaec0cebed4bee7063a320b5cb273 vs
rta/fr/inria/spirals/npefix/resi/NPEFixTemplateEvaluation$1.class :: 23c2fceb6a0ddbce5ca1ef99d84546f0 vs a1a910e293659d561c38e77b3dacc62b
md5sum: official/fr/inria/spirals/npefix/resi/WebsocketClient.class: No such file or directory
rta/fr/inria/spirals/npefix/resi/WebsocketClient.class :: 352eb65950272bedae75600b0bdf232b vs
rta/fr/inria/spirals/npefix/resi/NPEFixTemplateEvaluation$NpePosition.class :: 39442b281c2b23ec94ae74045957af0f vs 83e64942b54db40be3c453a0bf97a15d
rta/fr/inria/spirals/npefix/transformer/processors/BeforeDerefAdder$3.class :: c77e7b848ad854043a06d0057833e544 vs 3641a5d60a2fc2f500177f7c8d69f629
rta/fr/inria/spirals/npefix/transformer/processors/BeforeDerefAdder$4.class :: 0b831176958e3cc48238da8142d2ee46 vs 77f7fe69fb7a299254d83a5699fe8462
rta/fr/inria/spirals/npefix/transformer/processors/BeforeDerefAdder$2.class :: d933ffe3575e2f4c9ce7ef31ad8e9ff6 vs e4bed11fe7ec9eeb2d23b7bc6c963b30
rta/fr/inria/spirals/npefix/transformer/processors/BeforeDerefAdder$1.class :: 6ecb53cf499c5c7f2005d43aa1f364f2 vs 17dd5406a39b0fb40a0dc9fcfbec3f56
rta/fr/inria/spirals/npefix/transformer/processors/BeforeDerefAdder.class :: bb748d656cbec1cf69400111559e90b9 vs 8003f9310501f934c920fd033579ed9d
rta/fr/inria/spirals/npefix/config/Config.class :: 9736bba74f9da265712cbef916dd34b3 vs 5411e4b4b967b955d04dc9dbb0961b20
rta/fr/inria/spirals/npefix/patch/generator/PatchesGenerator.class :: 3b74f91adae651ed1947dabc076de741 vs c81c7af1081d063e5bb39c1f0b1a9331
rta/fr/inria/spirals/npefix/main/run/Main.class :: 133d2bde4a63bb08353e5d56f9dcad6c vs f9a0bb742c8efea946f04ef63aa33ab8
rta/fr/inria/spirals/npefix/main/all/Launcher.class :: 1186ed0d9bb010a9d89fc23e5fe29806 vs 0a8a8c0db81c7409f9ce459936d29f72
rta/fr/inria/spirals/npefix/main/all/TryCatchRepairStrategy.class :: a5395f1dccacf99ad1d35b4d7520f5e2 vs 819d9cc08cf2120867c732e9bb589052
rta/fr/inria/spirals/npefix/main/all/DefaultRepairStrategy.class :: 52f89937f3b6b5be924a48e505f2470c vs 634fbad80643afaa3598d25cb702a11a
rta/fr/inria/spirals/npefix/main/patch/SortPatch.class :: 46a0ea731a8d40fa7a69f38db4e8d6ee vs 4c017c39563a4c2b88850dc4085423fd
rta/fr/inria/spirals/npefix/main/ExecutionClient.class :: 8bc7ac4f092f4d63acc4f737b285f7a6 vs f2a204c7591adff20fc4724ede417f6b
rta/fr/inria/spirals/npefix/main/ExecutionClient$1.class :: 500a55b11de5a2350763066665eb7723 vs 7fb846a8d4e3468e279ab417eddd5511

Astor

$ mkdir "/tmp/repair_tools/astor"

Get official Astor

$ mkdir "/tmp/repair_tools/astor/official"
$ cd "/tmp/repair_tools/astor/official"
$ git clone https://github.com/SpoonLabs/astor.git repository
$ cd "/tmp/repair_tools/astor/official/repository"
$ git checkout 26ee3dfc8b2d7ed4373f7cfe0d4bd5bcf31d9f28
$ mvn package -DskipTests
$ cp "/tmp/repair_tools/astor/official/repository/target/astor-0.0.2-SNAPSHOT-jar-with-dependencies.jar" "/tmp/repair_tools/astor/official/astor.zip"
$ cd "/tmp/repair_tools/astor/official"
$ unzip "astor.zip"

Get RTA Astor

$ mkdir "/tmp/repair_tools/astor/rta"
$ cd "/tmp/repair_tools/astor/rta"
$ curl -OL https://raw.githubusercontent.com/program-repair/RepairThemAll/master/repair_tools/astor.jar
$ mv "astor.jar" "astor.zip"
$ unzip "astor.zip"

RTA Astor vs Official Astor

$ cd "/tmp/repair_tools/astor"

$ find rta/fr/inria -type f | while read -r file; do \
    rta=$(md5sum "$file" | cut -f1 -d' '); \
    official=$(md5sum $(echo "$file" | sed 's|rta/|official/|g') | cut -f1 -d' '); \
    if [ "$rta" != "$official" ]; then \
      echo "$file :: $rta vs $official"; \
    fi; \
  done

As there is no difference, the provided astor.jar file seems to match the one build from the official repository.

Arja

$ mkdir "/tmp/repair_tools/arja"

Get official Arja

Note: As suggested in here, the script below checkouts commit id 918ad29c6c3f4cb7e202125fc71e53661a1146f4.

$ mkdir "/tmp/repair_tools/arja/official"
$ cd "/tmp/repair_tools/arja/official"
$ git clone https://github.com/yyxhdy/arja.git repository
$ cd "/tmp/repair_tools/arja/official/repository"
$ git checkout 918ad29c6c3f4cb7e202125fc71e53661a1146f4
$ mvn package -DskipTests
$ cp "/tmp/repair_tools/arja/official/repository/target/Arja-0.0.1-SNAPSHOT-jar-with-dependencies.jar" "/tmp/repair_tools/arja/official/arja.zip"
$ cd "/tmp/repair_tools/arja/official"
$ unzip "arja.zip"

Get RTA Arja

$ mkdir "/tmp/repair_tools/arja/rta"
$ cd "/tmp/repair_tools/arja/rta"
$ curl -OL https://raw.githubusercontent.com/program-repair/RepairThemAll/master/repair_tools/arja.jar
$ mv "arja.jar" "arja.zip"
$ unzip "arja.zip"

RTA Arja vs Official Arja

$ cd "/tmp/repair_tools/arja"

$ find rta/us/msu/cse/repair -type f | while read -r file; do \
    rta=$(md5sum "$file" | cut -f1 -d' '); \
    official=$(md5sum $(echo "$file" | sed 's|rta/|official/|g') | cut -f1 -d' '); \
    if [ "$rta" != "$official" ]; then \
      echo "$file :: $rta vs $official"; \
    fi; \
  done

rta/us/msu/cse/repair/algorithms/kali/Kali$1.class :: b0ef2825bad281969873332e787ea132 vs 4b3a8b237aa3dfd7dff50f18f45a8662
rta/us/msu/cse/repair/algorithms/kali/Kali.class :: 5a1c2505682200d815989c45dd1afed3 vs 039c21fc9a2e871d052f65accf6ab8b4
rta/us/msu/cse/repair/core/util/IO.class :: 4f3282acbf27d9c31d3051954b8678fe vs 89483926803278df57d7339ac8a2b2ce
rta/us/msu/cse/repair/ec/problems/ArjaProblem$1.class :: 47a13c2d672750a9517e801dde1a2988 vs 8f21ada3f6642114a497362d5de23d7b
rta/us/msu/cse/repair/ec/problems/GenProgProblem.class :: f8c89dcab82b734ee8d2a830f78d9e97 vs abc3c563a149988bdb21dd2333d29a98
rta/us/msu/cse/repair/ec/problems/ArjaProblem.class :: cb024b5ce4efb5817ff01db4352cdf49 vs a0b40e8070033a1afca183ccdcc334de
rta/us/msu/cse/repair/ParameterInfoMain.class :: e6b651bc44cb67ede10e6cb1a3d81aaa vs 59c208562a21d4f63dd7bc567c37411f
rta/us/msu/cse/repair/ArjaMain.class :: c228acdc160021d18072ddcdeb23d874 vs 918ef946e2ac9294c44b258dc2c84614
rta/us/msu/cse/repair/Interpreter.class :: db60ea46c3b7171dba97cdca05a08d2d vs 72ba0053160664498cdafb06db771138

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions