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
 

Reply via email to