Page MenuHome

Crash: load new level; array modifier using curve length
Closed, ResolvedPublic

Description

System Information

Ubuntu 13.10, 64-bit; I think it happens on Windows too.
AMD Mobility Radeon HD 5430

Blender Version
Broken: 2.69 a7b1349 (31 Jan), 4393398, b105d2a
Worked: 2.69 7294c54 (23 Dec)

Short description of error

If a game loads a file that contains an object with an array modifier that uses a curve to set its length, blender/blenderplayer will segfault.

Exact steps for others to reproduce the error

  1. Download and unzip:
  2. Load bge_loader.blend
  3. Press P

The game will start and immediately load bge_curve_array_crash.blend. At that point, it will crash with this stack trace:

It seems that amd->curve_ob->curve_cache is null.

If you start the game from bge_curve_array_crash.blend (which contains the array object), it does not crash.

Event Timeline

Alex Fraser (z0r) added a project: Game Engine.
Alex Fraser (z0r) set Type to Bug.
Alex Fraser (z0r) created this task.
Alex Fraser (z0r) raised the priority of this task from to Needs Triage by Developer.

I ran a git bisect; it seems the first bad version is ac077f016d3667a3b15853ac79b272cb0b6fd661. Full log:

@Sergey Sharybin (sergey), what do you think about this? To fix this, we could revert ac077f0 apart from the DAG node tagging part - but then we're back to needing a reference to the scene.

Would need to look further into this issue. All the stuff which is related on object evaluation should happen strictly in order defined in DAG and there should no be any if(data_is_not_ready) { prepare_data; } things.
But found some more cases when following this rule crashes. Will either find some proper solution or temporary revert the change or until proper solution is ready.

Thank you, Sergey! Fix confirmed.