On Fri, Jan 23, 2026 at 10:53:43AM +0100, Michael Catanzaro wrote:
> I had a similar problem once many years ago. In that case, I wound up
> hacking one of the gobject-introspection tools -- I think it was
> g-ir-scanner? -- to not delete the temporary source file and temporary
> executable so that I could debug them. I found that the temporary program
> calls the _get_type() function of every type. For WebKit's types, they
> initialize WebKit, JavaScriptCore, bmalloc, etc. It's very likely that
> something is crashing somewhere in the initialization routines.
Since you mention this - I get warnings that sound related:
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:
In constructor 'gl::ActiveVariable::ActiveVariable()':
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:63:30:
warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct gl::ActiveVariable::PODStruct'; use assignment or
value-initialization instead [-Wclass-memaccess]
63 | ActiveVariable() { memset(&pod, 0, sizeof(pod)); }
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/ProgramExecutable.cpp:
In constructor 'gl::ProgramExecutable::ProgramExecutable(rx::GLImplFactory*,
gl::InfoLog*)':
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/ProgramExecutable.cpp:750:11:
warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct gl::ProgramExecutable::PODStruct'; use assignment or
value-initialization instead [-Wclass-memaccess]
750 | memset(&mPod, 0, sizeof(mPod));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:
In constructor 'gl::LinkedUniform::LinkedUniform(GLenum, GLenum, const
std::vector<unsigned int>&, int, int, int, int, const sh::BlockMemberInfo&)':
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:28:11:
warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct gl::LinkedUniform'; use assignment or value-initialization instead
[-Wclass-memaccess]
28 | memset(this, 0, sizeof(*this));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:87:8:
note: 'struct gl::LinkedUniform' declared here
87 | struct LinkedUniform
| ^~~~~~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:
In constructor 'gl::BufferVariable::BufferVariable()':
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:85:11:
warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct gl::BufferVariable::PODStruct'; use assignment or
value-initialization instead [-Wclass-memaccess]
85 | memset(&pod, 0, sizeof(pod));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:204:12:
note: 'struct gl::BufferVariable::PODStruct' declared here
204 | struct PODStruct
| ^~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:
In constructor 'gl::BufferVariable::BufferVariable(GLenum, GLenum, const
std::string&, const std::vector<unsigned int>&, int, int, const
sh::BlockMemberInfo&)':
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:100:11:
warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct gl::BufferVariable::PODStruct'; use assignment or
value-initialization instead [-Wclass-memaccess]
100 | memset(&pod, 0, sizeof(pod));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:204:12:
note: 'struct gl::BufferVariable::PODStruct' declared here
204 | struct PODStruct
| ^~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:
In constructor 'gl::AtomicCounterBuffer::AtomicCounterBuffer()':
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:112:11:
warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct gl::AtomicCounterBuffer::PODStruct'; use assignment or
value-initialization instead [-Wclass-memaccess]
112 | memset(&pod, 0, sizeof(pod));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:240:12:
note: 'struct gl::AtomicCounterBuffer::PODStruct' declared here
240 | struct PODStruct
| ^~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:
In constructor 'gl::InterfaceBlock::InterfaceBlock()':
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:131:11:
warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct gl::InterfaceBlock::PODStruct'; use assignment or
value-initialization instead [-Wclass-memaccess]
131 | memset(&pod, 0, sizeof(pod));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:278:12:
note: 'struct gl::InterfaceBlock::PODStruct' declared here
278 | struct PODStruct
| ^~~~~~~~~
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:
In constructor 'gl::InterfaceBlock::InterfaceBlock(const std::string&, const
std::string&, bool, bool, unsigned int, unsigned int, int)':
/tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:143:11:
warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial
type 'struct gl::InterfaceBlock::PODStruct'; use assignment or
value-initialization instead [-Wclass-memaccess]
143 | memset(&pod, 0, sizeof(pod));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
(perhaps more but those are all that were in my scrollback)
Have these been addressed in the meantime?
> My recommended next step is investigate the source code of gobject
> introspection and figure out how to stop it from deleting the temporary
> files. I was hoping there would be an existing debug option for this, and I
> see some references to a "save-temps" (save temporary files) option in the
> code, but I don't know how to use it.
>
> I would start investigating here:
>
> https://gitlab.gnome.org/GNOME/gobject-introspection/-/blob/main/giscanner/dumper.py
>
> You're going to want debugging symbols for sure. I hope -g1 works. If you
> really can't get debug symbols, then as an absolute last resort I would
> start adding print statements in WebKit to try to narrow down where it's
> crashing. For that, I would start in WebKit2Initialize.cpp.
>
> Good luck....
Thank you for the hints!
Thomas