Opened 2 years ago

Last modified 2 years ago

#65630 closed enhancement

GraphicsMagick: add debug variant — at Version 9

Reported by: mascguy (Christopher Nielsen) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version: 2.7.2
Keywords: debug Cc: ryandesign (Ryan Carsten Schmidt), parafin
Port: GraphicsMagick

Description (last modified by mascguy (Christopher Nielsen))

Presently, we're trying to diagnose a crash occurring for darktable, which appears to be originating from within this port:

issue:64252

There are two barriers, though:

  • The GraphicsMagick library installs a SIGSEGV handler, preventing the app from catching/handling the condition;
  • No +debug variant, which would assist with diagnostics.

For the debug variant, that should be reasonably straightforward, and would be beneficial.

Change History (9)

comment:1 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: ryandesign removed
Owner: changed from mascguy to ryandesign

Too much on my plate, I'll let Ryan tackle this

comment:2 Changed 2 years ago by mascguy (Christopher Nielsen)

Resolution: wontfix
Status: assignedclosed

issue:64252 has been resolved, so this is no longer needed.

If there's user demand, we can always reopen.

comment:3 Changed 2 years ago by jmroot (Joshua Root)

There is still the valid issue raised in the other ticket that GraphicsMagick installs its own SIGSEGV handler when used as a library. Up to you if you want to open a ticket for that, here or upstream.

comment:4 Changed 2 years ago by mascguy (Christopher Nielsen)

Description: modified (diff)
Resolution: wontfix
Status: closedreopened
Summary: GraphicsMagick: add debug variantGraphicsMagick: disable SIGSEGV handler in library; add debug variant

Let's expand the scope of this ticket to include the lib signal handler, per @jmroot in comment:3

comment:5 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: ryandesign added
Owner: changed from ryandesign to mascguy
Status: reopenedassigned

comment:6 in reply to:  description Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to mascguy:

Relative to the signal handler, we should consider patching the code to disable that, for the library. Along with engaging with upstream, for a longer-term fix.

Yes, please consult with upstream before attempting that.

comment:7 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: parafin added

Relative to the signal handlers, it looks like apps can now explicitly disable those. Functionality was added to the GraphicsMagick API in version 1.3.35, released 2020-02-23:

InitializeMagickEx(): New function which may be used in place of InitializeMagick() to initialize GraphicsMagick. This initialization function returns an error status value, may update a passed ExceptionInfo structure with error information, and provides an options parameter which supports simple bit-flags to tailor initialization. The signal handler registrations are skipped if the MAGICK_OPT_NO_SIGNAL_HANDER flag is set in the options.

@parafin, is that something you folks want to try, for darktable?

comment:8 Changed 2 years ago by mascguy (Christopher Nielsen)

Since apps now have control over signal handler registration, we can take that off of our plate.

As for the debug variant: Based on local testing, the debug portgroup does the trick for this port. Are there any concerns/gotchas with utilizing that?

comment:9 Changed 2 years ago by mascguy (Christopher Nielsen)

Description: modified (diff)
Summary: GraphicsMagick: disable SIGSEGV handler in library; add debug variantGraphicsMagick: add debug variant
Note: See TracTickets for help on using tickets.