Page 1 of 1

so much loading of libraries

Posted: Thu Jul 01, 2021 1:00 am
by mwieder
When I build locally from the develop branch and then launch from the linux-x86_64-bin I see this in the terminal:

[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0
[210112] MCU_library_load libpango-1.0.so.0 -> libpango-1.0.so.0
[210112] MCU_library_load libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0
[210112] MCU_library_load libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0

Why so much thrashing? Is this reloading all three libraries every time another font is discovered?

Re: so much loading of libraries

Posted: Thu Jul 01, 2021 3:32 am
by FourthWorld
I wonder if that may be related to the huge number of font init calls at boot, which has caused issues with at least one with host:
https://quality.livecode.com/show_bug.cgi?id=14115

Re: so much loading of libraries

Posted: Fri Jul 02, 2021 1:08 am
by mwieder
Digging into this a bit further, I see MCU_library_load calls MCSLibraryCreateWithPath, which doesn't seem to exist in the source code but is apparently constructed during the build process by code in weak_stub_maker.pl. And has a bewildering comment by way of explanation. I've read this six times today and still don't have a clue as to what it means.
# MCSupportLibraryLoad and friends have engine dependency - for example
# when weak linking to the crypto library we rely on revsecurity living
# next to the executable, which is resolved using MCcmd. We also rely on
# mappings from dynamic library names to paths which can be custom-
# defined as deploy parameters. Hence we need to use special
# implementations for access to the libfoundation system library API
# if we require no engine dependency.