For some time LDP.exe just crash for me on my Windows 11 laptop, I can connect and bind successfully, but as soon as I want to view an object or tree, ldp.exe just crash.
So I decided to capture and analyze the crash dump

So what is going on here? The function takes the following parameters: BerEncode(CtrlInfo *ci, PBERVAL pBerVal)
CtrlInfo struct holds some info about an LDAP control.
pBerVal is just a LDAP_BERVAL (winldap.h) – Win32 apps | Microsoft Learn
This lead me to check my controls loaded in ldp.exe – what is that?

Something I’ve never entered at least, that is for sure? But how did it end up there?
It turned out that if, “HKEY_CURRENT_USER\Software\Microsoft\Ldp\Controls\ControlCount” get’s out of sync and contains a value that’s above the numbers of controls saved, it adds this kind of garbage data and will cause ldp.exe to crash!


Ha! Good find. Thanks for sharing!