)]}'
{
  "log": [
    {
      "commit": "f51d182c3d797bd14bcc66a3c0bf1fc6f9adf8ee",
      "tree": "12921f3bfd788a0dc2a8b5937ebf0ed13af220e5",
      "parents": [
        "3098e36d2935ad7ce9995ef5fb7395d035383047"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 01 19:25:35 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 03 17:54:23 2021 +0000"
      },
      "message": "Fix DDMS-JDWP race\n\nDDMS would race against the JDWP-Handshake in some circumstances\ncausing clients to become confused as DDMS packets were recieved\nbefore the handshake reply.\n\nTest: atest CtsJdwpTunnelHostTestCases\nTest: ./tools/dt_fds_forward.py\nBug: 178655046\nChange-Id: Iabeb68829455ee4d2682f0a14591c8b7b0f4fc5f\n"
    },
    {
      "commit": "15b8113eb72b829e2026477a49e159635a48349b",
      "tree": "b62e2ddcc2e3fb3d1156103c2bfbef08916d3cdc",
      "parents": [
        "d3233abdf14f173bb99e3905e8543ffff845230e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 24 13:29:07 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 24 18:28:13 2018 -0800"
      },
      "message": "Have adbconnection handle DDMS packets if agent not loaded\n\nIf DDMS was being used on a userdebug or eng build it would cause the\nlibjdwp agent to be loaded on various system processes, most notably\nsystem_server. This would cause a massive performance hit as it tries\nto force system_server to jit but, due to security policies, it is\nforced to interpreter instead.\n\nTo fix this we make it so that (so long as no debugger commands are\nissued) DDMS commands are handled without loading the JDWP agent. When\na non-DDMS command is issued we will load and initialize the JDWP\nagent which will take over handling DDMS traffic from then on.\n\nThis will ensure that in the common (for userdebug) use-case where\nprocesses only encounter DDMS commands the process will not need to\nload the full debugger.\n\nTest: ./test.py --host -j50\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003ddevice\nTest: Run ddms monitor on host,\n      adb shell stop \u0026\u0026\n      adb shell setprop dalvik.vm.jdwp-provider adbconnection\n      adb shell start;\n      Ensure that device does not start to jank\nTest: Run ddms monitor on host,\n      adb shell stop \u0026\u0026\n      adb shell setprop dalvik.vm.jdwp-provider adbconnection\n      adb shell start;\n      Turn off ddms monitor.\n      Ensure that device does not start to jank\nTest: Build and run\nTest: use ddms monitor.\nTest: Use Android Studio.\nTest: Build and debug debuggable app (bandhook-kotlin)\nTest: Build and debug non-debuggable app on userdebug build\n        (bandhook-kotlin)\nTest: Debug running system process on userdebug build\n        (com.android.packageinstaller)\n\nBug: 62821960\nBug: 72456312\nBug: 72457427\n\nChange-Id: Ib8d2af6c76bd2fac5a4b27e730695b2d016d3583\n"
    },
    {
      "commit": "3979571aa1dfc907569fb7e27ab225ca89f6f86e",
      "tree": "fd91ada65bffa3fcefc773a36cbf8055bf688a1c",
      "parents": [
        "403207107da7f11525c4d305184c56b35ec1c17a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 14 11:58:21 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 19 14:52:01 2017 -0800"
      },
      "message": "Add fd-forwarding transport lib\n\ndt_fd_forward is a jdwpTransport that takes as an address a local\nsocket file-descriptor and uses it to allow some other piece of code\nor program to control the actual attach and communication process.\n\ntools/dt_fds_forward.py is a python program that can be used as a\ncontroller for this comms system. This is useful for testing. It\nimplements the same behavior (excepting DDMS) that the adbconnection\nplugin will but is capable of being easily used on normal host\nmachines. Unlike the plugin, dt_fds_forward.py works by allowing a\nsocket file-descriptor to be inherited by the forked Java Language\nRuntime.\n\nThe overall goal of this transport is to use it to allow us to safely\nmultiplex the out-bound data with DDMS data. This is needed to let us\nmatch current DDMS behavior which transmits packets in the blind on\nthe same channel JDWP traffic is sent on.\n\nTest: ./tools/dt_fds_forward.py  \\\n        ./test/run-test --host --dev 001-HelloWorld\nTest: jdb -attach localhost:12345\nTest: nc localhost 12345, handshake, disconnect\nTest: jdb -attach localhost:12345, detach, attach\n\nTest: ./tools/dt_fds_forward.py  \\\n            --debug-lib $JAVA_HOME/jre/lib/amd64/libjdwp.so \\\n            -- \\\n            ./test/run-test --host --jvm --dev 001-HelloWorld\nTest: jdb -attach localhost:12345\n\nBug: 62821960\nBug: 69169846\n\nChange-Id: I654db6c6991c006933e1e1f0a4e41c13f795f9a8\n"
    }
  ]
}
