Telkine2018 / compaktcircuit

3 stars 5 forks source link

Crashes when nested processors are left as ghosts #20

Open SunSerega opened 1 month ago

SunSerega commented 1 month ago

I was only able to consistently reproduce one of the crashes, but I think they are all related.

Reproduction demo:

Steps:

  1. Enter processor
  2. Place a ghost of nested processor
  3. Exit processor
  4. Try doing something with the parent processor - like Ctrl+C, Ctrl+V it

The crash stack:

6532.684 Error MainLoop.cpp:1404: Exception at tick 889723: The mod Compakt circuits (1.1.2) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event compaktcircuit::on_robot_built_entity (ID 14)
__compaktcircuit__/scripts/build.lua:741: attempt to index local 'tags' (a nil value)
stack traceback:
    __compaktcircuit__/scripts/build.lua:741: in function 'create_packed_circuit_internal'
    __compaktcircuit__/scripts/build.lua:507: in function 'create_packed_circuit_v2'
    __compaktcircuit__/scripts/build.lua:835: in function 'create_packed_circuit'
    __compaktcircuit__/scripts/processor.lua:235: in function 'init_procinfo'
    __compaktcircuit__/scripts/processor.lua:303: in function 'on_build'
    __compaktcircuit__/scripts/processor.lua:328: in function 'handler'
    __compaktcircuit__/scripts/tools.lua:273: in function <__compaktcircuit__/scripts/tools.lua:271>

Another crash I understand enough to describe:

  1. Place a ghost of nested processor
  2. Manually place a proper processor over it
  3. Immediately exit the parent processor

But this does not reproduce consistently. When it does, the crash stack is:

6247.089 Error MainLoop.cpp:1404: Exception at tick 901132: The mod Compakt circuits (1.1.2) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event compaktcircuit::on_gui_click (ID 1)
The mod Compakt circuits (1.1.2) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event compaktcircuit::on_player_changed_surface (ID 53)
__compaktcircuit__/scripts/build.lua:741: attempt to index local 'tags' (a nil value)
stack traceback:
    __compaktcircuit__/scripts/build.lua:741: in function 'create_packed_circuit_internal'
    __compaktcircuit__/scripts/build.lua:507: in function 'create_packed_circuit_v2'
    __compaktcircuit__/scripts/build.lua:835: in function 'create_packed_circuit'
    __compaktcircuit__/scripts/editor.lua:1534: in function <__compaktcircuit__/scripts/editor.lua:1507>
    [C]: in function 'teleport'
    __compaktcircuit__/scripts/editor.lua:873: in function 'exit_player'
    __compaktcircuit__/scripts/editor.lua:888: in function 'handler'
    __compaktcircuit__/scripts/tools.lua:390: in function <__compaktcircuit__/scripts/tools.lua:386>
stack traceback:
    [C]: in function 'teleport'
    __compaktcircuit__/scripts/editor.lua:873: in function 'exit_player'
    __compaktcircuit__/scripts/editor.lua:888: in function 'handler'
    __compaktcircuit__/scripts/tools.lua:390: in function <__compaktcircuit__/scripts/tools.lua:386>
SunSerega commented 1 month ago

These 2 seem related too: