Skip to content

KLayout 0.28.2 crashes when registering a plugin if a layout exists #1242

@caspar-iqm

Description

@caspar-iqm

The following Python code defines a simple dummy plugin, creates a new layout, and then registers the plugin. Running it crashes the KLayout application since 0.28 (tested to crash on 0.28.2, verified that this worked on the last version of 0.27).

import pya

class DummyPlugin(pya.Plugin):
    def __init__(self, manager, view):
        self.manager = manager
        self.view = view


class DummyPluginFactory(pya.PluginFactory):
    def __init__(self):
        self.register(1000, "dummy_plugin", "Dummy Plugin")
        
    def create_plugin(self, manager, _, view):
        return DummyPlugin(manager, view)


# Create a new layout
main_window = pya.MainWindow.instance()
main_window.create_layout(2)

# Register plugin
DummyPluginFactory()

Reversing the order, i.e. calling DummyPluginFactory() before main_window.create_layout(2), works fine.

So there is a workaround, just make sure the plugins are registered before any layouts are created. Since this is a hard crash and new behavior in 0.28 I still report it as bug.

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions