diff --git a/mercurial/commands.py b/mercurial/commands.py
index 3ef153aa1eed4ced1f998b93cbb98152d02148a9_bWVyY3VyaWFsL2NvbW1hbmRzLnB5..81623652376510c653f9529be3b6c86a391438fd_bWVyY3VyaWFsL2NvbW1hbmRzLnB5 100644
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1035,7 +1035,14 @@
     state = hbisect.load_state(repo)
 
     if rev:
-        nodes = [repo.changelog.node(i) for i in logcmdutil.revrange(repo, rev)]
+        revs = logcmdutil.revrange(repo, rev)
+        goodnodes = state[b'good']
+        badnodes = state[b'bad']
+        if goodnodes and badnodes:
+            candidates = repo.revs(b'(%ln)::(%ln)', goodnodes, badnodes)
+            candidates += repo.revs(b'(%ln)::(%ln)', badnodes, goodnodes)
+            revs = candidates & revs
+        nodes = [repo.changelog.node(i) for i in revs]
     else:
         nodes = [repo.lookup(b'.')]
 
diff --git a/tests/test-bisect2.t b/tests/test-bisect2.t
index 3ef153aa1eed4ced1f998b93cbb98152d02148a9_dGVzdHMvdGVzdC1iaXNlY3QyLnQ=..81623652376510c653f9529be3b6c86a391438fd_dGVzdHMvdGVzdC1iaXNlY3QyLnQ= 100644
--- a/tests/test-bisect2.t
+++ b/tests/test-bisect2.t
@@ -784,7 +784,6 @@
   $ hg log -q -r 'bisect(pruned)'
   0:33b1f9bc8bc5
   1:4ca5088da217
-  2:051e12f87bf1
   8:dab8161ac8fc
   11:82ca6f06eccd
   12:9f259202bbe7