mojira.dev
MC-310313

Predicates that reference themselves crash the game when invoked

The bug

Predicates can reference each other, and when this forms a cycle, the game stack-overflows and crashes.

How to reproduce

  1. Download and apply the attached data pack: [mediaInline]
    It defines a predicate, test:test3, with the following definition:

    {
      "type": "any_of",
      "terms": [
        "test:test3",
        {
          "type": "weather_check"
        }
      ]
    }
  2. Run /execute if predicate test:test3

Expected result

Either the definition should fail to load, the command should fail at runtime, or the command should succeed.

Observed result

The game freezes and crashes

[media]

Notes

At load time, the game does detect this:

[10:03:39] [Worker-Main-22/WARN]: Found loot table element validation problem in {test:test3@minecraft:predicate}.terms[0]: test:test3 of type minecraft:predicate is recursively called

However, only recursive loot tables are prevented from crashing:

[10:00:06] [Server thread/WARN]: Detected infinite loop in loot tables

Linked issues

Attachments

Comments 0

No comments.

tryashtar

(Unassigned)

Confirmed

Platform HC

Important

Data Packs

26.3 Snapshot 5

26.3 Snapshot 6

Retrieved