I finally managed to fix it. I was running the script on a VM with development
tools installed and running it on a WebKit built from my host machine. The
reason I was using this intricate setup was because the script broke completely
on my host machine when I tried to run it, giving this error:
Fatal Python error: PyThreadState_Get: no current thread
This actually crashed Python. I couldn't figure out why this was happening so I
tried to run it on a semi-clean VM with only dev tools installed, and it was
working (i.e. not crashing) but failed for some reason to find the symbols.
At this point I did some more researching on the original crash, and managed to
fix it. This is probably caused by having multiple Python versions on your
machine, particularly with brew, which messes up your $PATH and the script ends
up using some wrong Python dynamic library, which leads to the crash. I fixed
this by giving the correct $PATH to the script when launching it:
PATH=/usr/bin ./Tools/Scripts/dump-class-layout --architecture=x86_64 -c Debug
JavaScriptCore JSString
This lets me run the script correctly on my host machine, and it works
perfectly fine. I really don't know why it was failing in the VM, since I had
developer tools installed.
Da: simon.fra...@apple.com per conto di Simon Fraser
Inviato: lunedì 5 novembre 2018 20:39
A: Frank Jaeger
Cc: webkit-dev@lists.webkit.org
Oggetto: Re: [webkit-dev] dump-class-layout script not working
I assume you've actually done a debug build?
Your command line works for me:
100$ $ ./Tools/Scripts/dump-class-layout --architecture=x86_64 -c Debug
JavaScriptCore JSString
+0 < 24> JSString
+0 < 8> JSC::JSCell JSC::JSCell
+0 < 1> JSC::HeapCell JSC::HeapCell
+0 < 4> JSC::StructureID m_structureID
+4 < 1> JSC::IndexingType m_indexingTypeAndMisc
+5 < 1> JSC::JSType m_type
+6 < 1> JSC::TypeInfo::InlineTypeFlags m_flags
+7 < 1> JSC::CellState m_cellState
+8 < 4> unsigned int m_length
+12 < 2> uint16_t m_flags
+14 < 2>
+16 < 8> WTF::String m_value
+16 < 8> WTF::RefPtr > m_impl
+16 < 8> WTF::DumbPtrTraits::StorageType m_ptr
Total byte size: 24
Total pad bytes: 2
Padding percentage: 8.33 %
BTW you should never work on class layouts in debug builds, since they may be
different from shipping.
There are some unit tests for dump-class-layout (they used to be run as part of
webkitpy tests, but I think Dan changed that?). Do all the tests pass for you?
Simon
On Nov 5, 2018, at 4:02 PM, Frank Jaeger
mailto:fjaege...@outlook.com>> wrote:
Hi Simon, thanks for your help. I am running the script on macOS Mojave 10.14
and I'm pretty sure I have the lldb python bindings installed. Or otherwise it
should fail when importing them at the beginning of the script, right? From
what I understood by reading the script's code, it is directly calling into the
lldb binding to dump the class layout, and it's failing inside.
As I've said before, the error it gives me implies that the provided
framework/class pair has not been found in the image, even though I am sure
that the pair is valid and found in the image (e.g. JSC::JSString).
Da: simon.fra...@apple.com<mailto:simon.fra...@apple.com>
mailto:simon.fra...@apple.com>> per conto di Simon
Fraser mailto:simon.fra...@apple.com>>
Inviato: lunedì 5 novembre 2018 14:17
A: Frank Jaeger
Cc: webkit-dev@lists.webkit.org<mailto:webkit-dev@lists.webkit.org>
Oggetto: Re: [webkit-dev] dump-class-layout script not working
Dump-class-layout uses the lldb python bindings. Maybe those are not available
on your platform?
I think we’ve only ever tried it on macOS. What platform are you trying on?
Simon
On Nov 4, 2018, at 12:43 PM, Frank Jaeger
mailto:fjaege...@outlook.com>> wrote:
Hello. First of all I'm really sorry if this is the wrong mailing list to post
to, webkit-help would have probably been better but it doesn't seem very active.
I run into some problems while trying to use the dump-class-layout script
(found in Tools/Scripts/). I built WebKit using the build-webkit script with
the --debug flag.
After building, I tried to run the dump-class-layout script with the following
arguments:
./Tools/Scripts/dump-class-layout --architecture=x86_64 -c Debug JavaScriptCore
JSString
I also tried different frameworks and classes. The script always fails telling
me that "no type matches x in y" where x is the class name I used in the run
and y is the framework name.
Why is this happening? The script is correctly finding the built and
symbolicated framework image, so why is it not working properly? Thanks in
advance.
___
webkit-dev mailing list
webkit-dev@lists.webkit.org<mailto:we