jwons / MultilingualProvenanceDebugger

GNU General Public License v3.0
2 stars 1 forks source link

Stepping functionality appears to be broken at start/end of a program #6

Closed jyoo980 closed 3 years ago

jyoo980 commented 3 years ago

Reproduced on

There appears to be an issue when a user steps to either the beginning or the end of a program, and then attempts to go forward/back once more. The debugger does not move from its current location, but instead repeats the current node.

The following PROV-JSON was used to debug this issue

{
    "prefix": {
        "prov": "http://www.w3.org/ns/prov#",
        "rdt": "https://github.com/End-to-end-provenance/ExtendedProvJson/blob/master/JSON-format.md"
    },

    "agent" : {
        "rdt:a1": {
            "rdt:tool.name": "rdt",
            "rdt:tool.version": "3.3",
            "rdt:json.version": "2.3",
            "rdt:args.names": [
                "overwrite",
                "details",
                "annotate.inside.functions",
                "first.loop",
                "max.loops",
                "snapshot.size",
                "save.debug"
            ],
            "rdt:args.values": [
                "TRUE",
                "TRUE",
                "FALSE",
                "1",
                "0",
                "0",
                "FALSE"
            ],
            "rdt:args.types": [
                "logical",
                "logical",
                "logical",
                "integer",
                "integer",
                "numeric",
                "logical"
            ]
        }
    },

    "activity" : {
        "rdt:p1": {
            "rdt:name": "fib.R",
            "rdt:type": "Start",
            "rdt:elapsedTime": "0.368",
            "rdt:scriptNum": 1,
            "rdt:startLine": "NA",
            "rdt:startCol": "NA",
            "rdt:endLine": "NA",
            "rdt:endCol": "NA"
        },
        "rdt:p2": {
            "rdt:name": "fib <- function(n) {\n  if (n < 2)\n\tn\n  else\n\tfib(n - 1",
            "rdt:type": "Operation",
            "rdt:elapsedTime": "0.157",
            "rdt:scriptNum": 1,
            "rdt:startLine": 2,
            "rdt:startCol": 1,
            "rdt:endLine": 7,
            "rdt:endCol": 1
        },
        "rdt:p3": {
            "rdt:name": "if (fib(10) > 420) {\n\tprint(\"hello\")\n} else {\n\tprint(\"blaze ",
            "rdt:type": "Operation",
            "rdt:elapsedTime": "0.248",
            "rdt:scriptNum": 1,
            "rdt:startLine": 10,
            "rdt:startCol": 1,
            "rdt:endLine": 14,
            "rdt:endCol": 1
        },
        "rdt:p4": {
            "rdt:name": "print(\"done\")",
            "rdt:type": "Operation",
            "rdt:elapsedTime": "0.08",
            "rdt:scriptNum": 1,
            "rdt:startLine": 16,
            "rdt:startCol": 1,
            "rdt:endLine": 16,
            "rdt:endCol": 13
        },
        "rdt:p5": {
            "rdt:name": "fib.R",
            "rdt:type": "Finish",
            "rdt:elapsedTime": "0.007",
            "rdt:scriptNum": 1,
            "rdt:startLine": "NA",
            "rdt:startCol": "NA",
            "rdt:endLine": "NA",
            "rdt:endCol": "NA"
        }
    },

    "entity" : {
        "rdt:d1": {
            "rdt:name": "fib",
            "rdt:value": "function (n) ...",
            "rdt:valType": "function",
            "rdt:type": "Data",
            "rdt:scope": "R_GlobalEnv",
            "rdt:fromEnv": false,
            "rdt:hash": "",
            "rdt:timestamp": "",
            "rdt:location": ""
        },
        "rdt:d2": {
            "rdt:name": "output",
            "rdt:value": "\"done\"",
            "rdt:valType": "{\"container\":\"vector\", \"dimension\":[1], \"type\":[\"character\"]}",
            "rdt:type": "StandardOutput",
            "rdt:scope": "Standard output",
            "rdt:fromEnv": false,
            "rdt:hash": "",
            "rdt:timestamp": "",
            "rdt:location": ""
        },

        "rdt:environment": {
            "rdt:name": "environment",
            "rdt:architecture": "x86_64-apple-darwin17.0 (64-bit)",
            "rdt:operatingSystem": "macOS Big Sur 10.16",
            "rdt:language": "R",
            "rdt:langVersion": "R version 4.0.4 (2021-02-15)",
            "rdt:script": "/Users/jyoo/dev/cs508/fib.R",
            "rdt:scriptTimeStamp": "2021-03-30T16.32.02PDT",
            "rdt:scriptHash": "13f52045aae6d1466ced2222e0f8740e",
            "rdt:totalElapsedTime": "0.86",
            "rdt:sourcedScripts": "",
            "rdt:sourcedScriptTimeStamps": "",
            "rdt:sourcedScriptHashes": "",
            "rdt:workingDirectory": "/Users/jyoo/dev/cs508",
            "rdt:provDirectory": "/private/var/folders/w1/72dtq_m95wjg8gk8dq_3pddh0000gn/T/RtmpB4BRF7/prov_fib",
            "rdt:provTimestamp": "2021-03-30T16.32.17PDT",
            "rdt:hashAlgorithm": "md5"
        },

        "rdt:l1": {
            "name": "base",
            "version": "4.0.4",
            "prov:type": {
                "$": "prov:Collection",
                "type": "xsd:QName"
            }
        },
        "rdt:l2": {
            "name": "datasets",
            "version": "4.0.4",
            "prov:type": {
                "$": "prov:Collection",
                "type": "xsd:QName"
            }
        },
        "rdt:l3": {
            "name": "graphics",
            "version": "4.0.4",
            "prov:type": {
                "$": "prov:Collection",
                "type": "xsd:QName"
            }
        },
        "rdt:l4": {
            "name": "grDevices",
            "version": "4.0.4",
            "prov:type": {
                "$": "prov:Collection",
                "type": "xsd:QName"
            }
        },
        "rdt:l5": {
            "name": "methods",
            "version": "4.0.4",
            "prov:type": {
                "$": "prov:Collection",
                "type": "xsd:QName"
            }
        },
        "rdt:l6": {
            "name": "rdt",
            "version": "3.3",
            "prov:type": {
                "$": "prov:Collection",
                "type": "xsd:QName"
            }
        },
        "rdt:l7": {
            "name": "stats",
            "version": "4.0.4",
            "prov:type": {
                "$": "prov:Collection",
                "type": "xsd:QName"
            }
        },
        "rdt:l8": {
            "name": "utils",
            "version": "4.0.4",
            "prov:type": {
                "$": "prov:Collection",
                "type": "xsd:QName"
            }
        }
    },

    "wasInformedBy" : {
        "rdt:pp1": {
            "prov:informant": "rdt:p1",
            "prov:informed": "rdt:p2"
        },
        "rdt:pp2": {
            "prov:informant": "rdt:p2",
            "prov:informed": "rdt:p3"
        },
        "rdt:pp3": {
            "prov:informant": "rdt:p3",
            "prov:informed": "rdt:p4"
        },
        "rdt:pp4": {
            "prov:informant": "rdt:p4",
            "prov:informed": "rdt:p5"
        }
    },

    "wasGeneratedBy" : {
        "rdt:pd1": {
            "prov:activity": "rdt:p2",
            "prov:entity": "rdt:d1"
        },
        "rdt:pd2": {
            "prov:activity": "rdt:p4",
            "prov:entity": "rdt:d2"
        }
    },

    "used" : {
        "rdt:dp1": {
            "prov:entity": "rdt:d1",
            "prov:activity": "rdt:p3"
        }
    }
}

With the following sequence of commands (once the debugger has started)

n
n
b
b
b
n <- stays at the node
jwons commented 3 years ago

Fixed (pretty sure) in most recent commit, 9edea0e754836234fb02482538bd6f6233fb2e1d