sqlmapproject/sqlmap · error · OracleUndecided

oracle could not decide: %s

Error message

oracle could not decide: %s

What it means

Error "oracle could not decide: %s" thrown in sqlmapproject/sqlmap.

Source

Thrown at extra/esperanto/oracle.py:88

    def _ask(self, condition):
        # decided boolean, or raise OracleUndecided - NEVER manufacture False from an
        # unobservable probe (that would silently corrupt blind bisection). the oracle
        # must itself return False for unsupported/rejected SQL; a raised probe means
        # "could not observe" and, absent a quorum, is fatal.
        if self.quorum <= 1:
            r = self._probe(condition)
            if self.verbose:
                print("  [%s] %s" % ("T" if r else ("E" if r is None else "f"), condition))
            if r is None:
                # while laddering CANDIDATE rungs an undecidable/erroring probe (oracle
                # returned None OR raised - both surface here as None) means "this rung is
                # unusable", so read it as False and let the ladder move on; only OUTSIDE
                # probing (reading committed data) is it fatal, so a flaky read never
                # silently coerces to a definite bit
                if self._probing:
                    return False
                self._errors += 1
                raise OracleUndecided("oracle could not decide: %s" % condition)
            return r

        samples = 2 * self.quorum - 1
        yes = no = tries = 0
        while (yes + no) < samples and tries < samples + self.quorum + 2:
            tries += 1
            r = self._probe(condition)
            if r is None:
                self._errors += 1
                continue
            yes, no = (yes + 1, no) if r else (yes, no + 1)
            if yes >= self.quorum or no >= self.quorum:
                break
        if self.verbose:
            state = "T" if yes >= self.quorum else ("f" if no >= self.quorum else "E")
            print("  [%s %d:%d] %s" % (state, yes, no, condition))
        if yes >= self.quorum:
            return True

View on GitHub (pinned to 0a35b20e39)

When it happens

Trigger: Thrown at extra/esperanto/oracle.py:88 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of sqlmapproject/sqlmap@0a35b20e39 (2026-08-26). Data as JSON: /api/errors/af73d69677b63c34. Report an issue: GitHub.