menu_cache_lookup() создаёт объект MenuCache, но сразу данными не заполняет. Чтобы его заполнить, надо либо вручную дёргать метод menu_cache_reload(), что есть костыль. Либо создавать при помощи menu_cache_lookup_sync(), но он виснет.
Т.к. если на панели есть апплет меню, он инициализировал кэш при своём создании, то диалог запуска получал нормальный кэш. У тебя меню приложений на панели нет, так что кэш приходит пустым. При попытке сделать menu_cache_list_all_apps(), всё это весело падаёт в сегфолт, пытаясь читать по нулевому указателю.