<div dir="ltr">Hey guys,<div><br></div><div>I'm trying to track down an issue I'm seeing where dlopen takes significantly longer to execute when LLDB is attached vs GDB (I've attached a simple program that I used to reproduce the issue).</div><div>I was wondering if anybody had any idea what might be contributing to the additional execution time?</div><div><br></div><div>Running without any debugger attached:</div><div>$ ./lldb-load-sample</div><div>Handle: 0x555555768c80<br></div><div>Done loading. 848.27ms<br></div><div>$ ./lldb-load-sample</div><div>Handle: 0x555555768c80<br></div><div>Done loading. 19.6047ms</div><div><br></div><div>I noticed that the first run was significantly slower than any subsequent runs. Most likely due to some caching in Linux.</div><div><br></div><div><br></div><div>For LLDB:</div><div><div>(lldb) file lldb-load-sample</div><div>Current executable set to 'lldb-load-sample' (x86_64).</div><div>(lldb) run</div><div>Process 82804 launched: '/lldb-load-sample' (x86_64)</div><div>Handle: 0x555555768c80<br></div><div>Done loading. 5742.78ms</div><div>Process 82804 exited with status = 0 (0x00000000) </div><div>(lldb) run</div></div><div><div>Process 83454 launched: '<span style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">/lldb-load-sample'</span> (x86_64)</div><div>Handle: 0x555555768c80<br></div><div>Done loading. 19.4184ms<br></div><div>Process 83454 exited with status = 0 (0x00000000)</div></div><div><br></div><div>I noticed that subsequent runs were much faster (most likely due to some caching in Linux / LLDB), but that isn't relevant in my situation. Exiting LLDB and starting a new LLDB process still has an extremely long first run (In this case ~5.5s). There are other real world cases (initializing Vulkan which does a bunch of dlopens) where this can add 10s of seconds really slowing down iteration time.</div><div><br></div><div><br></div><div>For GDB:</div><div>(gdb) file lldb-load-sample</div><div>Reading symbols from a.out...done.<br></div><div>(gdb) run</div><div>Starting program: /lldb-load-sample<br></div><div>Handle: 0x555555768c80<br></div><div>Done loading. 79.7276ms<br></div><div>[Inferior 1 (process 85063) exited normally]<br></div><div>(gdb) run</div><div><div style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">Starting program: /lldb-load-sample<br></div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial">Handle: 0x555555768c80<br></div><div style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">Done loading. 80.325ms<br></div><div style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">[Inferior 1 (process 85063) exited normally]</div><div style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">As you can see the first run is slightly slower than running without a debugger attached, but it's not enough to be noticeable.</div><div style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">Thanks,</div><div style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">Scott</div><br></div></div>