Skip to content

Natron hangs on render when Effect.setExpression is used in Python script #560

@AdamNiederer

Description

@AdamNiederer

Hey, thanks for including robust automation support in Natron! I'm hitting a bit of a snag when trying to use setExpression on various effects, as shown below:

Problem

Expected behavior: The program renders a one-frame video file.

Actual behavior: Program hangs at the point indicated below, and is not responsive to SIGINT or SIGTERM.

Steps to Reproduce

Create repro.py with the following contents:

def createInstance(app, group):
    write = app.createNode("fr.inria.openfx.WriteFFmpeg") # also occurs with WriteOIIO
    write.getParam("filename").set("/tmp/repro.mkv") # path shouldn't matter here; change as needed
    text = app.createNode("net.fxarena.openfx.Text")
    text.getParam("text").setExpression("0", False) # also hangs with ("'0'", False) and ("ret='0'", True)
    write.connectInput(0, text)
    app.render(write, 0, 1)

Then do this:

$ Natron --version
Natron Version 2.3.15
Copyright (C) 2013-2018 INRIA and Alexandre Gauthier-Foichat
>>>Use the --help or -h option to print usage.<<<
Natron version 2.3.15 at commit 513a2491008c152417ae913f8d1ab83e432aa7e3 on
$ Natron -b -t repro.py
Natron Version 2.3.15
Copyright (C) 2013-2018 INRIA and Alexandre Gauthier-Foichat
>>>Use the --help or -h option to print usage.<<<
Note: -t argument given, loading in command-line interpreter mode, only Python commands / scripts are accepted
Restoring the image cache...
Loading plugin cache...
Info: init.py script not loaded (this is not an error)
Loading PyPlugs...
Note: -t argument given, loading in command-line interpreter mode, only Python commands / scripts are accepted
Write1 ==> Rendering started
[it hangs here]

When the first argument to setExpression is invalid Python syntax such as ",,,,", the program does not hang and produces a video file without the text, as expected. When the setExpression line is commented out, it also produces a video file with "Enter text" in the correct position.

I'm able to manually set params to Python expressions and render the results in the GUI without issue; this appears to only happen when I'm running scripts.

Versions

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions