https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83372

--- Comment #5 from Alan Griffiths <alan at octopull dot co.uk> ---
It isn't clear why, but the problem seems to be provoked by this function:

int mf::WaylandConnector::client_socket_fd() const
{
    enum { server, client, size };
    int socket_fd[size];

    if (socketpair(AF_LOCAL, SOCK_STREAM, 0, socket_fd))
    {
        BOOST_THROW_EXCEPTION((std::system_error{
            errno,
            std::system_category(),
            "Could not create socket pair"}));
    }

    if (!wl_client_create(display.get(), socket_fd[server]))
    {
        BOOST_THROW_EXCEPTION((std::system_error{
            errno,
            std::system_category(),
            "Failed to add server end of socketpair to Wayland display"}));
    }

    return socket_fd[client];
}

Reworking to have just one throw site avoids the segfault. (But I've not yet
found a simpler example exhibiting the problem.)

Reply via email to