обнаружилась тут давеча омерзительная вещь, при создании скриншотов gm import
начисто игнорирует опцию -frame
, и вообще не желает включать обрамление окон в скриншот. причем гадость эта проявляется только при выборе окна мышью. если явно указывать id, к примеру предварительно узнав его через xwininfo -frame
, все делается корректно.
пришлось лезть в исходники. сначала я грешил на некорректную работу XQueryTree
, но потом все оказалось значительно тривиальнее. классический use after free при разборе данной опции.
ну и исправление
--- graphicsmagick-1.3.25/magick/command.c.orig 2017-01-28 09:31:07.000000000 +0200 +++ graphicsmagick-1.3.25/magick/command.c 2017-01-28 09:33:42.965126294 +0200 @@ -15669,9 +15669,9 @@ { if (LocaleCompare("frame",option+1) == 0) { + ximage_info.frame=(*option == '-'); MagickFreeMemory(argv[i]); argv[i]=AcquireString("-ignore"); /* resolve option confict */ - ximage_info.frame=(*option == '-'); break; } MagickFatalError(OptionFatalError,UnrecognizedOption,option);