fix: Qt6 Wayland crash — root cause identified, kded6 fix deployed
ROOT CAUSE: Qt6's auto-generated Wayland wrappers pass NULL proxies to wl_*_add_listener() during initialization. The generated code stores wlRegistryBind() return value in m_wl_* member without null check, then init_listener() calls wl_*_add_listener(m_wl_*, ...) which page-faults at null+8 (write to proxy->object.implementation). FIX (kded6): wrapper script renames libqwayland.so to .disabled before launching kded6.real. QT_QPA_PLATFORM=offscreen alone is not sufficient — Qt6 still loads wayland plugin despite env var. FIX (libwayland): null guards in redox.patch for wl_proxy_add_listener, wl_proxy_get_version, wl_proxy_get_display. Blocked from compilation by pre-existing relibc conflicts (open_memstream, signalfd_siginfo). FIX (Qt6 wrappers): regex-based null guard insertion proven in concept. Blocked by TOML recipe format not supporting backslash escape sequences. Implementation plan: inject null guards via a separate build step script rather than inline in recipe.toml.
This commit is contained in:
@@ -16,6 +16,9 @@ qt_add_executable(redbear-greeter-ui
|
||||
)
|
||||
|
||||
target_compile_options(redbear-greeter-ui PRIVATE -fcf-protection=none)
|
||||
if(REDOX)
|
||||
target_compile_options(redbear-greeter-ui PRIVATE -include ${CMAKE_CURRENT_SOURCE_DIR}/redox_stdlib_compat.h)
|
||||
endif()
|
||||
target_link_options(redbear-greeter-ui PRIVATE -fcf-protection=none)
|
||||
|
||||
target_link_libraries(redbear-greeter-ui PRIVATE
|
||||
|
||||
@@ -77,15 +77,7 @@ ApplicationWindow {
|
||||
// Subtle vignette
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
gradient: RadialGradient {
|
||||
centerX: parent.width / 2
|
||||
centerY: parent.height / 2
|
||||
centerRadius: parent.width * 0.55
|
||||
focalX: centerX
|
||||
focalY: centerY
|
||||
GradientStop { position: 0.0; color: "#00000000" }
|
||||
GradientStop { position: 1.0; color: "#cc000000" }
|
||||
}
|
||||
color: "#66000000"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,12 +163,7 @@ ApplicationWindow {
|
||||
anchors.right: parent.right
|
||||
height: 40
|
||||
radius: parent.radius
|
||||
gradient: LinearGradient {
|
||||
startX: 0; startY: 0
|
||||
endX: 0; endY: 40
|
||||
GradientStop { position: 0.0; color: "#18ffffff" }
|
||||
GradientStop { position: 1.0; color: "#00ffffff" }
|
||||
}
|
||||
color: "#10ffffff"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef __redox__
|
||||
typedef long double c_longdouble;
|
||||
#endif
|
||||
Reference in New Issue
Block a user