summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkira Yokosawa <akiyks@gmail.com>2023-10-20 18:29:32 +0900
committerPaul E. McKenney <paulmck@kernel.org>2023-10-20 07:23:04 -0700
commitf307e19f2be033f0ef2de4fb0ce7945f9934b6b4 (patch)
treed1f99a5a74cf13ae09f1928f2f33cd5989ef6c89
parent0ecdabe67aae15f616e4a6ffeda8c4f76ff385ae (diff)
downloadperfbook-f307e19f2be033f0ef2de4fb0ce7945f9934b6b4.tar.gz
Prevent inkscape from interacting with desktop manager
Crashes of command-line Inkscape happens when it exits too soon before it can be properly removed from window manager's list of applications it is aware of. Glib 2.75.3 has removed GSlice allocator [1], which was permissive about UAF issues. Question is, "why is the command-line Inkscape registered in such a list in the first place?" There is mention of an option named "--without-gui" in Inkscape's wiki page on "Using the Command Line" [2]: The --without-gui option has been removed. Most parameters trigger Inkscape to run without GUI by default now. Instead enable GUI mode specifically using --with-gui if needed. However, current Inkscape does *initialize* itself as a GUI application regardless of the need of GUI. Alternatively, Inkscape can be forced to run isolated from window/ desktop managers with bogus strings set to a couple of env variables. After some tries and errors, these two env variables turned out to be essential here: - XDG_RUNTIME_DIR - DBUS_SESSION_BUS_ADDRESS Update Makefile and set bogus strings to them, which sounds a little rough but should be better than ignoring error codes, after reverting commits: - c2f9a99366b3 ("Ignore error of unstable Inkscape") - a01629a5f734 ("Make sure all PDF conversions are complete") This change resolves crashes of Inkscape observed under Fedora 38, Fedora 39 beta, Ubuntu 23.04, and openSUSE tumbleweed. [1]: https://gitlab.gnome.org/GNOME/glib/-/issues/1079 [2]: https://wiki.inkscape.org/wiki/index.php/Using_the_Command_Line Signed-off-by: Akira Yokosawa <akiyks@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
-rw-r--r--Makefile14
1 files changed, 4 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index 3875c52b..424a166c 100644
--- a/Makefile
+++ b/Makefile
@@ -111,7 +111,6 @@ INKSCAPE := $(shell $(WHICH) inkscape 2>/dev/null)
ifdef INKSCAPE
INKSCAPE_ONE := $(shell inkscape --version 2>/dev/null | grep -c "Inkscape 1")
endif
-IGNORE_INKSCAPE_ERROR ?= 1
LATEXPAND := $(shell $(WHICH) latexpand 2>/dev/null)
QPDF := $(shell $(WHICH) qpdf 2>/dev/null)
@@ -267,10 +266,6 @@ endif
autodate.tex: $(LATEXSOURCES) $(BIBSOURCES) $(LST_SOURCES) \
$(PDFTARGETS_OF_EPS) $(PDFTARGETS_OF_SVG) $(FCVSNIPPETS) $(FCVSNIPPETS_VIA_LTMS) \
$(GITREFSTAGS) utilities/autodate.sh
-ifneq ($(IGNORE_INKSCAPE_ERROR),0)
- # Make sure all SVG --> PDF conversions are complete
- $(MAKE) -j1 figs
-endif
sh utilities/autodate.sh
perfbook_flat.tex: autodate.tex
@@ -455,6 +450,9 @@ else
include epstopdf-rule.mk
endif
+# bogus settings for preventing Inkscape from interacting with desktop manager
+ISOLATE_INKSCAPE ?= XDG_RUNTIME_DIR=na DBUS_SESSION_BUS_ADDRESS=na
+
$(PDFTARGETS_OF_SVG): $(FIXSVGFONTS)
$(PDFTARGETS_OF_SVG): %.pdf: %.svg
@echo "$< --> $(suffix $@)"
@@ -488,11 +486,7 @@ endif
ifeq ($(INKSCAPE_ONE),0)
@inkscape --export-pdf=$@ $<i > /dev/null 2>&1
else
- ifneq ($(IGNORE_INKSCAPE_ERROR),0)
- -@inkscape -o $@ $<i > /dev/null 2>&1
- else
- @inkscape -o $@ $<i > /dev/null 2>&1
- endif
+ @$(ISOLATE_INKSCAPE) inkscape -o $@ $<i > /dev/null 2>&1
endif
@rm -f $<i
ifeq ($(chkpagegroup),on)