{"action":"created","issue":{"url":"https://api.github.com/repos/eteran/edb-debugger/issues/260","labels_url":"https://api.github.com/repos/eteran/edb-debugger/issues/260/labels{/name}","comments_url":"https://api.github.com/repos/eteran/edb-debugger/issues/260/comments","events_url":"https://api.github.com/repos/eteran/edb-debugger/issues/260/events","html_url":"https://github.com/eteran/edb-debugger/issues/260","id":110477352,"number":260,"title":"Conditional breakpoints don't work","user":{"login":"10110111","id":6376882,"avatar_url":"https://avatars.githubusercontent.com/u/6376882?v=3","gravatar_id":"","url":"https://api.github.com/users/10110111","html_url":"https://github.com/10110111","followers_url":"https://api.github.com/users/10110111/followers","following_url":"https://api.github.com/users/10110111/following{/other_user}","gists_url":"https://api.github.com/users/10110111/gists{/gist_id}","starred_url":"https://api.github.com/users/10110111/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/10110111/subscriptions","organizations_url":"https://api.github.com/users/10110111/orgs","repos_url":"https://api.github.com/users/10110111/repos","events_url":"https://api.github.com/users/10110111/events{/privacy}","received_events_url":"https://api.github.com/users/10110111/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/eteran/edb-debugger/labels/bug","name":"bug","color":"fc2929"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-10-08T15:34:47Z","updated_at":"2015-10-08T16:31:23Z","closed_at":null,"body":"Namely, if you make the code `B9 45 23 01 00 90 90 90 E2 FB`, then put a conditional breakpoint at the third `NOP` with condition of `ecx==127`, then press `F9`, don't try to wait until it fires :) . It sticks at the breakpoint and moves no further."},"comment":{"url":"https://api.github.com/repos/eteran/edb-debugger/issues/comments/146605845","html_url":"https://github.com/eteran/edb-debugger/issues/260#issuecomment-146605845","issue_url":"https://api.github.com/repos/eteran/edb-debugger/issues/260","id":146605845,"user":{"login":"eteran","id":571477,"avatar_url":"https://avatars.githubusercontent.com/u/571477?v=3","gravatar_id":"","url":"https://api.github.com/users/eteran","html_url":"https://github.com/eteran","followers_url":"https://api.github.com/users/eteran/followers","following_url":"https://api.github.com/users/eteran/following{/other_user}","gists_url":"https://api.github.com/users/eteran/gists{/gist_id}","starred_url":"https://api.github.com/users/eteran/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eteran/subscriptions","organizations_url":"https://api.github.com/users/eteran/orgs","repos_url":"https://api.github.com/users/eteran/repos","events_url":"https://api.github.com/users/eteran/events{/privacy}","received_events_url":"https://api.github.com/users/eteran/received_events","type":"User","site_admin":false},"created_at":"2015-10-08T16:31:23Z","updated_at":"2015-10-08T16:31:23Z","body":"Thought about it, and I have a hypothesis on what the issue is. First some background:\r\n\r\nResuming a BP is annoyingly complex. When you are stopped on a BP and want to run. You need to do the following:\r\n\r\n1. back up one byte, because the CPU actually executed the BP instruction, moving the IP past it.\r\n2. disable the BP.\r\n3. **step** 1 instruction. We can't just resume, because what if the BP was on a jump to itself or some other situation where this BP can be hit again.\r\n4. re-enable the BP.\r\n5. finally resume.\r\n\r\nThis clearly works correctly for the manually controlled case of hitting stop and hitting run. But I am willing to bet, that somehow step 3 is not being done for conditional BPs. This explains the 100% usage by both edb and debuggee.\r\n\r\n* edb is constantly receiving a BP, stepping back 1 byte, resuming, hitting it again (with no progress)\r\n* the debuggee is constantly running and hitting the same BP over and over again (since edb keeps rewinding it to before the BP, and makes no progress).\r\n\r\nI'll start reviewing the code, but I think it shouldn't be too bad to fix once the problem is properly identified."}}