microsoft / microsoft/vscode-cpptools

-exec awatch triggers unknown exceptions

Open
#14,031 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug debugger help wanted
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

Environment
  • OS and version: Manjaro Linux 25
  • VS Code: 1.105.1
  • C/C++ extension: 1.28.3
  • OS and version of remote machine (if applicable): Windows 11 25H2
  • GDB / LLDB version: 16.3
Bug Summary and Steps to Reproduce

Bug Summary:

-exec awatch triggers unknown exceptions

#include <cstdio>
#include <string>
#include <windows.h>
int main(int argc, char *argv[]) {
    int a = 123;
    int b = a;
    a += 1;
    printf("Hello, World! %d\n", a);
}

Steps to reproduce:

  1. set breakpoint at line 6 then start debug windows exe
  2. -exec awatch a
  3. F10
Debugger Configurations
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${command:cmake.launchTargetPath}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerServerAddress": "private:2345",
            "preLaunchTask": "deploy",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "logging": {
                "engineLogging": true,
                "trace": true,
                "traceResponse": true
            }
        }
    ]
}
Debugger Logs
<--   C (next-18): {"command":"next","arguments":{"threadId":5148},"type":"request","seq":18}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7966) <-1036-exec-next --thread 1 --frame 0 \n"},"seq":536}
1: (7966) <-1036-exec-next --thread 1 --frame 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7967) ->1036^running\n"},"seq":538}
1: (7967) ->1036^running
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7967) ->*running,thread-id=\"all\"\n"},"seq":540}
1: (7967) ->*running,thread-id="all"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7968) 1036: elapsed time 1\n"},"seq":542}
1: (7968) 1036: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7970) ->(gdb)\n"},"seq":545}
1: (7970) ->(gdb)
--> R (next-18): {"type":"response","request_seq":18,"success":true,"command":"next","body":{},"seq":544}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7971) ->=breakpoint-modified,bkpt={number=\"4\",type=\"acc watchpoint\",disp=\"keep\",enabled=\"y\",what=\"a\",thread-groups=[\"i1\"],times=\"1\",original-location=\"a\"}\n"},"seq":548}
1: (7971) ->=breakpoint-modified,bkpt={number="4",type="acc watchpoint",disp="keep",enabled="y",what="a",thread-groups=["i1"],times="1",original-location="a"}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"\\n\"\n"},"seq":550}
1: (7974) ->~"\n"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"Thread 1 hit Hardware access (read/write) watchpoint 4: a\\n\"\n"},"seq":552}
1: (7974) ->~"Thread 1 hit Hardware access (read/write) watchpoint 4: a\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"\n"},"seq":553}

--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"\\n\"\n"},"seq":556}
1: (7974) ->~"\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"Thread 1 hit Hardware access (read/write) watchpoint 4: a\n"},"seq":559}
Thread 1 hit Hardware access (read/write) watchpoint 4: a
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"Value = 123\\n\"\n"},"seq":558}
1: (7974) ->~"Value = 123\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"\n"},"seq":562}

--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"0x00007ff670e3155e in main (argc=1, argv=0x7d90f0) at /home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc:6\\n\"\n"},"seq":564}
1: (7974) ->~"0x00007ff670e3155e in main (argc=1, argv=0x7d90f0) at /home/allen/\346\241\214\351\235\242/test_cpp/main.cc:6\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"Value = 123\n"},"seq":566}
Value = 123
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"6\\t    int b = a;\\n\"\n"},"seq":568}
1: (7974) ->~"6\t    int b = a;\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"0x00007ff670e3155e in main (argc=1, argv=0x7d90f0) at /home/allen/桌面/test_cpp/main.cc:6\n"},"seq":570}
0x00007ff670e3155e in main (argc=1, argv=0x7d90f0) at /home/allen/桌面/test_cpp/main.cc:6
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->*stopped,hw-awpt={number=\"4\",exp=\"a\"},reason=\"access-watchpoint-trigger\",value={new=\"123\"},frame={addr=\"0x00007ff670e3155e\",func=\"main\",args=[{name=\"argc\",value=\"1\"},{name=\"argv\",value=\"0x7d90f0\"}],file=\"/home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc\",fullname=\"/home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc\",line=\"6\",arch=\"i386:x86-64\"},thread-id=\"1\",stopped-threads=\"all\"\n"},"seq":572}
1: (7974) ->*stopped,hw-awpt={number="4",exp="a"},reason="access-watchpoint-trigger",value={new="123"},frame={addr="0x00007ff670e3155e",func="main",args=[{name="argc",value="1"},{name="argv",value="0x7d90f0"}],file="/home/allen/\346\241\214\351\235\242/test_cpp/main.cc",fullname="/home/allen/\346\241\214\351\235\242/test_cpp/main.cc",line="6",arch="i386:x86-64"},thread-id="1",stopped-threads="all"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"6\t    int b = a;\n"},"seq":574}
6	    int b = a;
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7975) <-1037-stack-list-frames --thread 1 0 1000\n"},"seq":576}
1: (7975) <-1037-stack-list-frames --thread 1 0 1000
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7976) ->1037^done,stack=[frame={level=\"0\",addr=\"0x00007ff670e3155e\",func=\"main\",file=\"/home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc\",fullname=\"/home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc\",line=\"6\",arch=\"i386:x86-64\"}]\n"},"seq":578}
1: (7976) ->1037^done,stack=[frame={level="0",addr="0x00007ff670e3155e",func="main",file="/home/allen/\346\241\214\351\235\242/test_cpp/main.cc",fullname="/home/allen/\346\241\214\351\235\242/test_cpp/main.cc",line="6",arch="i386:x86-64"}]
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7976) ->(gdb)\n"},"seq":580}
1: (7976) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7976) 1037: elapsed time 0\n"},"seq":582}
1: (7976) 1037: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7977) <-1038-var-delete var1\n"},"seq":584}
1: (7977) <-1038-var-delete var1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7977) ->1038^done,ndeleted=\"1\"\n"},"seq":586}
1: (7977) ->1038^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7978) ->(gdb)\n"},"seq":588}
1: (7978) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7978) 1038: elapsed time 1\n"},"seq":590}
1: (7978) 1038: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) <-1039-var-delete var2\n"},"seq":592}
1: (7979) <-1039-var-delete var2
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) ->1039^done,ndeleted=\"1\"\n"},"seq":594}
1: (7979) ->1039^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) ->(gdb)\n"},"seq":596}
1: (7979) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) 1039: elapsed time 0\n"},"seq":598}
1: (7979) 1039: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) <-1040-var-delete var3\n"},"seq":600}
1: (7979) <-1040-var-delete var3
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->1040^done,ndeleted=\"1\"\n"},"seq":602}
1: (7980) ->1040^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->(gdb)\n"},"seq":604}
1: (7980) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) 1040: elapsed time 0\n"},"seq":606}
1: (7980) 1040: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) <-1041-var-delete var4\n"},"seq":608}
1: (7980) <-1041-var-delete var4
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->1041^done,ndeleted=\"1\"\n"},"seq":610}
1: (7980) ->1041^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->(gdb)\n"},"seq":612}
1: (7980) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) 1041: elapsed time 0\n"},"seq":614}
1: (7980) 1041: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) <-1042-var-delete var5\n"},"seq":616}
1: (7980) <-1042-var-delete var5
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->1042^done,ndeleted=\"1\"\n"},"seq":618}
1: (7980) ->1042^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->(gdb)\n"},"seq":620}
1: (7980) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) 1042: elapsed time 0\n"},"seq":622}
1: (7980) 1042: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) <-1043-var-delete var6\n"},"seq":624}
1: (7981) <-1043-var-delete var6
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->1043^done,ndeleted=\"1\"\n"},"seq":626}
1: (7981) ->1043^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->(gdb)\n"},"seq":628}
1: (7981) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) 1043: elapsed time 0\n"},"seq":630}
1: (7981) 1043: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) <-1044-var-delete var7\n"},"seq":632}
1: (7981) <-1044-var-delete var7
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->1044^done,ndeleted=\"1\"\n"},"seq":634}
1: (7981) ->1044^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->(gdb)\n"},"seq":636}
1: (7981) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) 1044: elapsed time 0\n"},"seq":638}
1: (7981) 1044: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) <-1045-var-delete var8\n"},"seq":640}
1: (7981) <-1045-var-delete var8
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->1045^done,ndeleted=\"1\"\n"},"seq":642}
1: (7981) ->1045^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->(gdb)\n"},"seq":644}
1: (7981) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) 1045: elapsed time 0\n"},"seq":646}
1: (7981) 1045: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7982) Send Event AD7ExceptionEvent\n"},"seq":648}
1: (7982) Send Event AD7ExceptionEvent
--> E (stopped): {"type":"event","event":"stopped","body":{"reason":"exception","threadId":5148,"text":"Unknown stopping event","allThreadsStopped":true,"source":{"name":"main.cc","path":"/home/allen/桌面/test_cpp/main.cc","sources":[],"checksums":[]},"line":6,"column":1},"seq":650}
<--   C (threads-19): {"command":"threads","type":"request","seq":19}
--> R (threads-19): {"type":"response","request_seq":19,"success":true,"command":"threads","body":{"threads":[{"id":5148,"name":" [5148]"},{"id":4552,"name":" [4552]"}]},"seq":653}
<--   C (stackTrace-20): {"command":"stackTrace","arguments":{"threadId":5148,"startFrame":0,"levels":20},"type":"request","seq":20}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7993) <-1046-stack-list-arguments --thread 1 2 0 0\n"},"seq":656}
1: (7993) <-1046-stack-list-arguments --thread 1 2 0 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7994) ->1046^done,stack-args=[frame={level=\"0\",args=[{name=\"argc\",type=\"int\",value=\"1\"},{name=\"argv\",type=\"char **\",value=\"0x7d90f0\"}]}]\n"},"seq":658}
1: (7994) ->1046^done,stack-args=[frame={level="0",args=[{name="argc",type="int",value="1"},{name="argv",type="char **",value="0x7d90f0"}]}]
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7994) ->(gdb)\n"},"seq":660}
1: (7994) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7994) 1046: elapsed time 0\n"},"seq":662}
1: (7994) 1046: elapsed time 0
--> R (stackTrace-20): {"type":"response","request_seq":20,"success":true,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"name":"main(int argc, char ** argv)","source":{"name":"main.cc","path":"/home/allen/桌面/test_cpp/main.cc","sources":[],"checksums":[]},"line":6,"column":1,"instructionPointerReference":"0x00007ff670e3155e"}],"totalFrames":1},"seq":664}
<--   C (scopes-21): {"command":"scopes","arguments":{"frameId":1000},"type":"request","seq":21}
--> R (scopes-21): {"type":"response","request_seq":21,"success":true,"command":"scopes","body":{"scopes":[{"presentationHint":"locals","name":"Locals","variablesReference":1000,"expensive":false},{"presentationHint":"registers","name":"Registers","variablesReference":1001,"expensive":true}]},"seq":667}
<--   C (variables-22): {"command":"variables","arguments":{"variablesReference":1000},"type":"request","seq":22}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8416) <-1047-stack-list-variables --thread 1 --frame 0 0\n"},"seq":670}
1: (8416) <-1047-stack-list-variables --thread 1 --frame 0 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8417) ->1047^done,variables=[{name=\"argc\",arg=\"1\"},{name=\"argv\",arg=\"1\"},{name=\"a\"},{name=\"b\"}]\n"},"seq":672}
1: (8417) ->1047^done,variables=[{name="argc",arg="1"},{name="argv",arg="1"},{name="a"},{name="b"}]
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8417) ->(gdb)\n"},"seq":674}
1: (8417) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8417) 1047: elapsed time 1\n"},"seq":676}
1: (8417) 1047: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8417) <-1048-var-create --thread 1 --frame 0  - * \"argc\"\n"},"seq":678}
1: (8417) <-1048-var-create --thread 1 --frame 0  - * "argc"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8418) ->1048^done,name=\"var9\",numchild=\"0\",value=\"1\",type=\"int\",thread-id=\"1\",has_more=\"0\"\n"},"seq":680}
1: (8418) ->1048^done,name="var9",numchild="0",value="1",type="int",thread-id="1",has_more="0"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8418) ->(gdb)\n"},"seq":682}
1: (8418) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8419) 1048: elapsed time 1\n"},"seq":684}
1: (8419) 1048: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8419) <-1049-var-create --thread 1 --frame 0  - * \"argv\"\n"},"seq":686}
1: (8419) <-1049-var-create --thread 1 --frame 0  - * "argv"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8420) ->1049^done,name=\"var10\",numchild=\"1\",value=\"0x7d90f0\",type=\"char **\",thread-id=\"1\",has_more=\"0\"\n"},"seq":688}
1: (8420) ->1049^done,name="var10",numchild="1",value="0x7d90f0",type="char **",thread-id="1",has_more="0"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8420) ->(gdb)\n"},"seq":690}
1: (8420) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8420) 1049: elapsed time 0\n"},"seq":692}
1: (8420) 1049: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8420) <-1050-var-create --thread 1 --frame 0  - * \"a\"\n"},"seq":694}
1: (8420) <-1050-var-create --thread 1 --frame 0  - * "a"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8421) ->1050^done,name=\"var11\",numchild=\"0\",value=\"123\",type=\"int\",thread-id=\"1\",has_more=\"0\"\n"},"seq":696}
1: (8421) ->1050^done,name="var11",numchild="0",value="123",type="int",thread-id="1",has_more="0"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8421) ->(gdb)\n"},"seq":698}
1: (8421) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8421) 1050: elapsed time 1\n"},"seq":700}
1: (8421) 1050: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8421) <-1051-var-create --thread 1 --frame 0  - * \"b\"\n"},"seq":702}
1: (8421) <-1051-var-create --thread 1 --frame 0  - * "b"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8422) ->1051^done,name=\"var12\",numchild=\"0\",value=\"1893982384\",type=\"int\",thread-id=\"1\",has_more=\"0\"\n"},"seq":704}
1: (8422) ->1051^done,name="var12",numchild="0",value="1893982384",type="int",thread-id="1",has_more="0"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8422) ->(gdb)\n"},"seq":706}
1: (8422) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8422) 1051: elapsed time 0\n"},"seq":708}
1: (8422) 1051: elapsed time 0
--> R (variables-22): {"type":"response","request_seq":22,"success":true,"command":"variables","body":{"variables":[{"name":"a","value":"123","type":"int","evaluateName":"a","variablesReference":0,"memoryReference":"0x000000000000007b"},{"name":"b","value":"1893982384","type":"int","evaluateName":"b","variablesReference":0,"memoryReference":"0x0000000070e3e0b0"},{"name":"argc","value":"1","type":"int","evaluateName":"argc","variablesReference":0,"memoryReference":"0x0000000000000001"},{"name":"argv","value":"0x7d90f0","type":"char **","evaluateName":"argv","variablesReference":1002,"memoryReference":"0x00000000007d90f0"}]},"seq":710}

Other Extensions

No response

Additional Information

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with the supplied C++ program, Windows remote target, GDB 16.3, and the shown launch configuration. Start by tracing how the -exec awatch a command and the logged access-watchpoint-trigger response are handled, then verify that stepping no longer produces the reported unknown exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, typescript, vscode
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.