dump-class-layout script not working

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

dump-class-layout script not working

Frank Jaeger
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
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev
Reply | Threaded
Open this post in threaded view
|

Re: dump-class-layout script not working

Simon Fraser-6
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 <[hidden email]> 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
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev


_______________________________________________
webkit-dev mailing list
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev
Reply | Threaded
Open this post in threaded view
|

R: dump-class-layout script not working

Frank Jaeger
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: [hidden email] <[hidden email]> per conto di Simon Fraser <[hidden email]>
Inviato: lunedì 5 novembre 2018 14:17
A: Frank Jaeger
Cc: [hidden email]
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 <[hidden email]> 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
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev


_______________________________________________
webkit-dev mailing list
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev
Reply | Threaded
Open this post in threaded view
|

Re: dump-class-layout script not working

Joseph Pecoraro-2
In reply to this post by Frank Jaeger


On Nov 4, 2018, at 3:43 AM, Frank Jaeger <[hidden email]> 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.

This just worked for me on Mojave.

$ ./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>   <PADDING: 2 bytes>
 +16 <  8>     WTF::String m_value
 +16 <  8>         WTF::RefPtr<WTF::StringImpl, WTF::DumbPtrTraits<WTF::StringImpl> > m_impl
 +16 <  8>           WTF::DumbPtrTraits<WTF::StringImpl>::StorageType m_ptr
Total byte size: 24
Total pad bytes: 2
Padding percentage: 8.33 %

Could you show your exact output?

Perhaps opening a Bugzilla bug and putting the details there would be best. I’d be interested to know your version of Xcode/lldb (lldb --version, xcodebuild -version).

- Joe


_______________________________________________
webkit-dev mailing list
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev
Reply | Threaded
Open this post in threaded view
|

Re: dump-class-layout script not working

Simon Fraser-6
In reply to this post by Frank Jaeger
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>   <PADDING: 2 bytes>
 +16 <  8>     WTF::String m_value
 +16 <  8>         WTF::RefPtr<WTF::StringImpl, WTF::DumbPtrTraits<WTF::StringImpl> > m_impl
 +16 <  8>           WTF::DumbPtrTraits<WTF::StringImpl>::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 <[hidden email]> 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: [hidden email] <[hidden email]> per conto di Simon Fraser <[hidden email]>
Inviato: lunedì 5 novembre 2018 14:17
A: Frank Jaeger
Cc: [hidden email]
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 <[hidden email]> 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
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev



_______________________________________________
webkit-dev mailing list
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev
Reply | Threaded
Open this post in threaded view
|

R: dump-class-layout script not working

Frank Jaeger
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: [hidden email] <[hidden email]> per conto di Simon Fraser <[hidden email]>
Inviato: lunedì 5 novembre 2018 20:39
A: Frank Jaeger
Cc: [hidden email]
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>   <PADDING: 2 bytes>
 +16 <  8>     WTF::String m_value
 +16 <  8>         WTF::RefPtr<WTF::StringImpl, WTF::DumbPtrTraits<WTF::StringImpl> > m_impl
 +16 <  8>           WTF::DumbPtrTraits<WTF::StringImpl>::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 <[hidden email]> 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: [hidden email] <[hidden email]> per conto di Simon Fraser <[hidden email]>
Inviato: lunedì 5 novembre 2018 14:17
A: Frank Jaeger
Cc: [hidden email]
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 <[hidden email]> 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
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev



_______________________________________________
webkit-dev mailing list
[hidden email]
https://lists.webkit.org/mailman/listinfo/webkit-dev