Created attachment 193330 [details]
Okular crashes when opening a PDF attachment in Kmail. It also crashes when starting Okular, opening a first file and then opening a second file. The crashes happen because some dynamic_cast calls return NULL. The attached patch replaces these with qobject_cast. I'm not familiar enough with C++ to understand why dynamic_cast fails. The object is actually of type Okular::Part and the casts are side casts from one parent class to another, not up or down casts. I thought dynamic_cast could handle this though. Another way to fix the crash was to down cast to Okular::Part, but then the linker complained that the typeinfo wasn't available and okular had to be linked to okularpart.so to fix that. So, the problem may be that the side cast needs the typeinfo of Okular::Part at runtime and that it isn't available? Using qobject_cast fixes it because it doesn't rely on typeinfo.
Can someone reproduce this, because maybe this is some toolchain problem?
Hm, interesting, at a time we already had that patch in the port... must have gone AWOL sometime ago.
Please feel free to commit it.
I'll copy it from okular-kde4/files.
A commit references this bug:
Date: Sat May 12 16:35:56 UTC 2018
New revision: 469738
Add a patch from okular-kde4 that is still needed to fix crashes.
Approved by: kde (tcberner)