Open zybreak opened 2 years ago
To reproduce, instansiate a connection like so and set the DISPLAY
environment variable to point at some non-running X address. expected result is the graceful shutdown with a error message, instead it segfaults
xpp::connection<xpp::xkb::extension, xpp::shape::extension, xpp::big_requests::extension, xpp::randr::extension> a;
if (a.connection_has_error())
errx(EXIT_FAILURE, "Cannot open display");
I have identified 2 possible scenarios so far. #1 is when we create a connection and specify extensions, then the segfault seems to happen in the extension.
If no extensions are specified, the segfault happens because the connection objects tries to fetch the root screen, without checking for a successful connection first.
The second segfault is pretty simple to fix, but the first one requires more c++ skills than I currently have :)