[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kstars-devel
Subject:    Re: Kstars 3.6.0 MacOS find Object crash
From:       Robert Lancaster <rlancaste () gmail ! com>
Date:       2022-08-20 21:20:46
Message-ID: FCE3190E-1094-4B22-8EFB-15ABF72DCEF5 () gmail ! com
[Download RAW message or body]

Yeah, it really did take awhile to track down, especially because it wouldn't crash in any debugger so \
the only way I could test it was to make changes, add QMessageBox messages to give me some idea of what \
code runs and where it crashes, then build it, and run it, and then repeat.  I got to see some nice \
episodes of Netflix shows during builds. . .  And it was crazy that in the end, the QMessageBox in the \
right place ended up fixing the problem, so that made it even harder to see what was going on.

But hopefully this little bandaid will work for now until we can do something better.  And I did put a \
message there so we don't forget about it.

> On Aug 20, 2022, at 2:14 PM, Akarsh Simha <akarshsimha@gmail.com> wrote:
> 
> Bravissimo! This is some very patient analysis on your part Robert. I was very nervous when introducing \
> concurrency in the find dialog because concurrency just makes things so much harder to debug and stuff. \
> I'm strapped for time for the next few months, so I don't know when I can look at it, but the moment I \
> can I'll see if I missed something in the QThread API. If anyone knows a lot about Qt's concurrency \
> framework, I'd be grateful if they could take a look. 
> 
> On Fri, Aug 19, 2022 at 22:01 Robert Lancaster <rlancaste@gmail.com <mailto:rlancaste@gmail.com>> \
> wrote: Hey guys,
> 
> 
> Ok, I dug into this and ran a bunch of tests.  I don't know why this crash only occurs when running by \
> double clicking the app and not by running from Terminal or QT Creator.  It is very inconvenient to \
> have an error that won't happen when you run the code in a debugger and then will happen every time if \
> you don't!  I had thought that maybe it was something with MacOS sandboxing or gatekeeper, or maybe it \
> was something with packaging, or maybe it was something with environment variables.  But as far as I \
> could tell through my tests it is none of those.  I printed the environments in a QMessagebox and they \
> were slightly different, but not in any way that mattered I think.  The packaging was not the culprit \
> because it happened in the app both before and after packaging and I was running it on the same \
> machine, so it should not be the issue.  I haven't fully ruled out something with MacOS, but I don't \
> currently think that is what it is since there was no error message or warning that pops up about the \
> app being blocked from doing something it wasn't supposed to. 
> So then I proceeded to experiment with the changes in that one Commit.  I first tried narrowing down \
> where the problem was by copying and pasting code from before or after the commit and testing.  That \
> let me rule out a lot of the commit.  Then I added some Qmessagebox debug dialogs to see exactly when \
> it would fail.  As of now, it seems that the crash is entirely based on what happens when constructing \
> the Find Dialog in find dialog.cpp.  Specifically, it happens here: 
> m_asyncDBManager(new CatalogsDB::AsyncDBManager(CatalogsDB::dso_db_path()))
> 
> On line 65 when it constructs the new Asynch DB Manager. I did try changing the couple of lines of code \
> in find dialog.cpp and find dialog.h so that it would use the old manager code from before this commit \
> to verify if the new AsynchDBManger was really the culprit.  And yes, it worked fine with the old code. \
> So then I changed it back.  Then I played around with the constructor for that class. Very strangely, I \
> found that when I put my test QMessageBox message in just after line 772: 
> m_thread->start();
> 
> It didn't crash when it printed my debug QMessagebox but it did crash when I didn't have it there!  \
> That got me thinking that maybe for some reason, this object needed a little more time in its \
> constructor for some reason, even though there are no more commands after that.  So I just added a \
> sleep command to see if that would serve the same purpose and it worked! 
> QThread::msleep(100);
> 
> So I would really like to know why this works.  Here is a commit with a band aid for you guys to take a \
> look at: 
> https://invent.kde.org/education/kstars/-/merge_requests/706 \
> <https://invent.kde.org/education/kstars/-/merge_requests/706> 
> Thanks,
> 
> Rob
> 
> 
> > On Aug 17, 2022, at 2:06 AM, Jasem Mutlaq <mutlaqja@ikarustech.com <mailto:mutlaqja@ikarustech.com>> \
> > wrote: 
> > I received one report for Find Dialog crash as well on Raspberry Pi, so perhaps it's not unique to \
> > MacOS? 
> > However, I couldn't reproduce on Raspberry PI, Widows, or any x86-64 machine.
> > 
> > --
> > Best Regards,
> > Jasem Mutlaq
> > 
> > 
> > 
> > On Wed, Aug 17, 2022 at 8:52 AM Robert Lancaster <rlancaste@gmail.com <mailto:rlancaste@gmail.com>> \
> > wrote: Ok I did some more testing.
> > 
> > This commit is when the Find Dialog broke when running KStars on MacOS by double clicking the app:
> > 
> > https://github.com/KDE/kstars/commit/5a2ba9f8e8b275f44b7593a50ca66f09cb2f985d#diff-c2a2ab763404c18a2daee3feb8b31f2ec278034e7cc720870c4e5158081e0ee9 \
> > <https://github.com/KDE/kstars/commit/5a2ba9f8e8b275f44b7593a50ca66f09cb2f985d#diff-c2a2ab763404c18a2daee3feb8b31f2ec278034e7cc720870c4e5158081e0ee9>
> >  
> > I think that is the one you were hoping was not the one.  I still don't know why it broke it though.  \
> > Every time I run it from terminal or qt creator there is no problem.  It is just when running it by \
> > double clicking that is the problem. 
> > Note that I did test playing with the environment variables in qt creator and that seemed to have no \
> > effect.  And it also didn't seem to matter whether kstars was packaged up or not, so it doesn't seem \
> > to be a packaging issue. 
> > > On Aug 16, 2022, at 2:11 PM, Akarsh Simha <akarshsimha@gmail.com <mailto:akarshsimha@gmail.com>> \
> > > wrote: 
> > > If I am to blame for this, the parallelism introduced in the asynchronous find dialog is my \
> > > suspect, rather than the comet regex (which was actually Hy and not me). The regex seems unlikely \
> > > to cause the erratic behavior Robert is observing where it runs fine under a debugger. 
> > > But if it works fine when running KStars from a command line, that probably exonerates me and Hy, \
> > > and is likely an environment issue like Robert points out! 
> > > Regards
> > > Akarsh
> > > 
> > > 
> > > On Tue, Aug 16, 2022 at 07:28 Robert Lancaster <rlancaste@gmail.com <mailto:rlancaste@gmail.com>> \
> > > wrote: Hey guys,
> > > 
> > > I just got back from my two week trip to the Southwest.  Yesterday I resolved the issue with \
> > > building a dmg with my script, so now I can build DMGs that will work with older Macs and have all \
> > > the features we want in the dmg.   
> > > Next we can look into this Find Dialog bug.  I did some experiments today and I found that if I run \
> > > kstars from the command line or in a debugger, the find dialog works fine, but when running the app \
> > > by double clicking it crashes when you first access the find dialog.  This seems to me to indicate \
> > > an environment issue, like maybe an issue with environment variables or maybe a link to a library \
> > > that isn't properly in the app.  I will check further. 
> > > Thanks,
> > > 
> > > Rob
> > > 
> > > > On Aug 13, 2022, at 6:09 AM, John Evans <john.e.evans.email@gmail.com \
> > > > <mailto:john.e.evans.email@gmail.com>> wrote: 
> > > > I have the same problem with 3.6.0. Crashes everytime the find object dialog is invoked (button, \
> > > > keyboard, etc.) 
> > > > Works great when I run it in debug in Qt though.
> > > > 
> > > > Workaround is to use the skymap and click on the object you want. In the scheduler enter some \
> > > > text in the object field (doesn't matter what) and hit the + to use sky coordinates from the map. \
> > > >  On Sat, 13 Aug 2022 at 10:05, Akarsh Simha <akarshsimha@gmail.com \
> > > > <mailto:akarshsimha@gmail.com>> wrote: 
> > > > 
> > > > On Sat, Aug 13, 2022 at 01:27 Peter Amerl <pvamerl@gmail.com <mailto:pvamerl@gmail.com>> wrote:
> > > > Hi All, 
> > > > Has anyone else experienced an immediate crash when searching for objects on a Mac using the \
> > > > Apple-f key combination? I can confirm that it has worked in the past without a crash. Neither \
> > > > Ctrl-f, nor selecting it from the menu appears to work for me at this time.  The Crash trace is \
> > > > appended in the zip if anyone wants to have a look. 
> > > > Hi Peter
> > > > 
> > > > When you say it worked in the past, could you provide the exact version / git commit, and also \
> > > > your current version / git  commit that has the bug? I made several changes to the Find Dialog in \
> > > > the most recent version, notably performing asynchronous database queries through another thread. \
> > > > It never crashed on my Linux system. Also curious if someone else can reproduce it on MacOS or if \
> > > > it is unique to your system. 
> > > > Regards
> > > > Akarsh
> > > > 
> > > > 
> > > > Cheers, 
> > > > Peter 
> > > > 
> > > > 
> > > 
> > 
> 


[Attachment #3 (unknown)]

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body \
style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Yeah, it \
really did take awhile to track down, especially because it wouldn't crash in any debugger so the only \
way I could test it was to make changes, add QMessageBox messages to give me some idea of what code runs \
and where it crashes, then build it, and run it, and then repeat. &nbsp;I got to see some nice episodes \
of Netflix shows during builds. . . &nbsp;And it was crazy that in the end, the QMessageBox in the right \
place ended up fixing the problem, so that made it even harder to see what was going on.<br \
class=""><div><br class=""></div><div>But hopefully this little bandaid will work for now until we can do \
something better. &nbsp;And I did put a message there so we don't forget about it.</div><div><br \
class=""><blockquote type="cite" class=""><div class="">On Aug 20, 2022, at 2:14 PM, Akarsh Simha &lt;<a \
href="mailto:akarshsimha@gmail.com" class="">akarshsimha@gmail.com</a>&gt; wrote:</div><br \
class="Apple-interchange-newline"><div class=""><div dir="auto" class="">Bravissimo! This is some very \
patient analysis on your part Robert. I was very nervous when introducing concurrency in the find dialog \
because concurrency just makes things so much harder to debug and stuff. I'm strapped for time for the \
next few months, so I don't know when I can look at it, but the moment I can I'll see if I missed \
something in the QThread API. If anyone knows a lot about Qt's concurrency framework, I'd be grateful if \
they could take a look.</div><div dir="auto" class=""><br class=""></div><div class=""><br class=""><div \
class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 19, 2022 at 22:01 Robert Lancaster \
&lt;<a href="mailto:rlancaste@gmail.com" class="">rlancaste@gmail.com</a>&gt; wrote:<br \
class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div \
style="word-wrap:break-word;line-break:after-white-space" class=""><div class="">Hey guys,</div><div \
class=""><br class=""></div><div class="">&nbsp;</div>Ok, I dug into this and ran a bunch of tests.&nbsp; \
I don't know why this crash only occurs when running by double clicking the app and not by running from \
Terminal or QT Creator.&nbsp; It is very inconvenient to have an error that won't happen when you run the \
code in a debugger and then will happen every time if you don't!&nbsp; I had thought that maybe it was \
something with MacOS sandboxing or gatekeeper, or maybe it was something with packaging, or maybe it was \
something with environment variables.&nbsp; But as far as I could tell through my tests it is none of \
those.&nbsp; I printed the environments in a QMessagebox and they were slightly different, but not in any \
way that mattered I think.&nbsp; The packaging was not the culprit because it happened in the app both \
before and after packaging and I was running it on the same machine, so it should not be the issue.&nbsp; \
I haven't fully ruled out something with MacOS, but I don't currently think that is what it is since \
there was no error message or warning that pops up about the app being blocked from doing something it \
wasn't supposed to.<div class=""><br class=""></div><div class="">So then I proceeded to experiment with \
the changes in that one Commit.&nbsp; I first tried narrowing down where the problem was by copying and \
pasting code from before or after the commit and testing.&nbsp; That let me rule out a lot of the \
commit.&nbsp; Then I added some Qmessagebox debug dialogs to see exactly when it would fail.&nbsp; As of \
now, it seems that the crash is entirely based on what happens when constructing the Find Dialog in find \
dialog.cpp.&nbsp; Specifically, it happens here:</div><div class=""><br class=""></div><div class=""> \
<pre style="margin-top:0px;margin-bottom:0px;font-family:monospace" class="">m_asyncDBManager(<span \
style="font-style:italic;font-family:monospace;color:rgb(120,86,45)" class="">new</span><span \
style="font-family:monospace;color:rgb(77,79,82)" class=""> </span><span \
style="font-family:monospace;color:rgb(153,0,0)" class="">CatalogsDB</span>::<span \
style="font-family:monospace;color:rgb(153,0,0)" class="">AsyncDBManager</span>(<span \
style="font-family:monospace;color:rgb(153,0,0)" class="">CatalogsDB</span>::dso_db_path()))</pre><div \
class=""><br class=""></div><div class="">On line 65 when it constructs the new Asynch DB Manager. I did \
try changing the couple of lines of code in find dialog.cpp and find dialog.h so that it would use the \
old manager code from before this commit to verify if the new AsynchDBManger was really the \
culprit.&nbsp; And yes, it worked fine with the old code.&nbsp; So then I changed it back.&nbsp; Then I \
played around with the constructor for that class. Very strangely, I found that when I put my test \
QMessageBox message in just after line 772:</div><div class=""><br class=""></div><div class=""> <pre \
style="margin-top:0px;margin-bottom:0px;font-family:monospace" class="">m_thread<span \
style="font-family:monospace;color:rgb(120,86,45)" class="">-&gt;</span>start();</pre><div class=""><br \
class=""></div></div><div class="">It didn't crash when it printed my debug QMessagebox but it did crash \
when I didn't have it there!&nbsp; That got me thinking that maybe for some reason, this object needed a \
little more time in its constructor for some reason, even though there are no more commands after \
that.&nbsp; So I just added a sleep command to see if that would serve the same purpose and it \
worked!</div><div class=""><br class=""></div><div class=""> <pre \
style="margin-top:0px;margin-bottom:0px;font-family:monospace" class=""><span \
style="font-family:monospace;color:rgb(255,128,128)" class="">QThread</span>::msleep(<span \
style="font-family:monospace;color:rgb(138,96,44)" class="">100</span>);</pre><div class=""><br \
class=""></div></div><div class="">So I would really like to know why this works.&nbsp; Here is a commit \
with a band aid for you guys to take a look at:</div><div class=""><br class=""></div><div class=""><a \
href="https://invent.kde.org/education/kstars/-/merge_requests/706" target="_blank" \
class="">https://invent.kde.org/education/kstars/-/merge_requests/706</a></div><div class=""><br \
class=""></div><div class="">Thanks,</div><div class=""><br class=""></div><div \
class="">Rob</div></div></div><div style="word-wrap:break-word;line-break:after-white-space" \
class=""><div class=""><div class=""><br class=""></div><div class=""><br class=""><blockquote \
type="cite" class=""><div class="">On Aug 17, 2022, at 2:06 AM, Jasem Mutlaq &lt;<a \
href="mailto:mutlaqja@ikarustech.com" target="_blank" class="">mutlaqja@ikarustech.com</a>&gt; \
wrote:</div><br class=""><div class=""><div dir="ltr" class="">I received one report for Find Dialog \
crash as well on Raspberry Pi, so perhaps it's not unique to MacOS?<div class=""><br class=""></div><div \
class="">However, I couldn't reproduce on Raspberry&nbsp;PI, Widows, or any x86-64 machine.</div><div \
class=""><br clear="all" class=""><div class=""><div dir="ltr" data-smartmail="gmail_signature" \
class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class="">--</div><div \
class="">Best Regards,<br class="">Jasem Mutlaq<br class=""></div><div class=""><br \
class=""></div></div></div></div></div></div><br class=""></div></div><br class=""><div \
class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 17, 2022 at 8:52 AM Robert Lancaster \
&lt;<a href="mailto:rlancaste@gmail.com" target="_blank" class="">rlancaste@gmail.com</a>&gt; wrote:<br \
class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div \
class="">Ok I did some more testing.<div class=""><br class=""></div><div class="">This commit is when \
the Find Dialog broke when running KStars on MacOS by double clicking the app:</div><div class=""><br \
class=""></div><div class=""><a \
href="https://github.com/KDE/kstars/commit/5a2ba9f8e8b275f44b7593a50ca66f09cb2f985d#diff-c2a2ab763404c18a2daee3feb8b31f2ec278034e7cc720870c4e5158081e0ee9" \
target="_blank" class="">https://github.com/KDE/kstars/commit/5a2ba9f8e8b275f44b7593a50ca66f09cb2f985d#diff-c2a2ab763404c18a2daee3feb8b31f2ec278034e7cc720870c4e5158081e0ee9</a></div><div \
class=""><br class=""></div><div class="">I think that is the one you were hoping was not the one.&nbsp; \
I still don't know why it broke it though.&nbsp; Every time I run it from terminal or qt creator there is \
no problem.&nbsp; It is just when running it by double clicking that is the problem.</div><div \
class=""><br class=""></div><div class="">Note that I did test playing with the environment variables in \
qt creator and that seemed to have no effect.&nbsp; And it also didn't seem to matter whether kstars was \
packaged up or not, so it doesn't seem to be a packaging issue.<br class=""><div class=""><br \
class=""><blockquote type="cite" class=""><div class="">On Aug 16, 2022, at 2:11 PM, Akarsh Simha &lt;<a \
href="mailto:akarshsimha@gmail.com" target="_blank" class="">akarshsimha@gmail.com</a>&gt; \
wrote:</div><br class=""><div class=""><div dir="auto" class="">If I am to blame for this, the \
parallelism introduced in the asynchronous find dialog is my suspect, rather than the comet regex (which \
was actually Hy and not me). The regex seems unlikely to cause the erratic behavior Robert is observing \
where it runs fine under a debugger.</div><div dir="auto" class=""><br class=""></div><div dir="auto" \
class="">But if it works fine when running KStars from a command line, that probably exonerates me and \
Hy, and is likely an environment issue like Robert points out!</div><div dir="auto" class=""><br \
class=""></div><div dir="auto" class="">Regards</div><div dir="auto" class="">Akarsh</div><div dir="auto" \
class=""><br class=""></div><div class=""><br class=""><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Tue, Aug 16, 2022 at 07:28 Robert Lancaster &lt;<a \
href="mailto:rlancaste@gmail.com" target="_blank" class="">rlancaste@gmail.com</a>&gt; wrote:<br \
class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div \
class="">Hey guys,<div class=""><br class=""></div><div class="">I just got back from my two week trip to \
the Southwest.&nbsp; Yesterday I resolved the issue with building a dmg with my script, so now I can \
build DMGs that will work with older Macs and have all the features we want in the dmg. &nbsp;</div><div \
class=""><br class=""></div><div class="">Next we can look into this Find Dialog bug.&nbsp; I did some \
experiments today and I found that if I run kstars from the command line or in a debugger, the find \
dialog works fine, but when running the app by double clicking it crashes when you first access the find \
dialog.&nbsp; This seems to me to indicate an environment issue, like maybe an issue with environment \
variables or maybe a link to a library that isn't properly in the app.&nbsp; I will check \
further.</div><div class=""><br class=""></div><div class="">Thanks,</div><div class=""><br \
class=""></div><div class="">Rob</div></div><div class=""><div class=""><div class=""><br \
class=""><blockquote type="cite" class=""><div class="">On Aug 13, 2022, at 6:09 AM, John Evans &lt;<a \
href="mailto:john.e.evans.email@gmail.com" target="_blank" class="">john.e.evans.email@gmail.com</a>&gt; \
wrote:</div><br class=""><div class=""><div dir="ltr" class="">I have the same problem with 3.6.0. \
Crashes everytime&nbsp;the find object dialog is invoked (button, keyboard, etc.)<div class=""><br \
class=""></div><div class="">Works great when I run it in debug in Qt though.</div><div class=""><br \
class=""></div><div class="">Workaround is to use the skymap and click on the object you want. In \
the&nbsp;scheduler enter some text in the object field (doesn't matter what) and hit the&nbsp;+ to use \
sky coordinates from the map.</div></div><br class=""><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Sat, 13 Aug 2022 at 10:05, Akarsh Simha &lt;<a href="mailto:akarshsimha@gmail.com" \
target="_blank" class="">akarshsimha@gmail.com</a>&gt; wrote:<br class=""></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div \
class=""><br class=""></div><div class=""><br class=""><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Sat, Aug 13, 2022 at 01:27 Peter Amerl &lt;<a href="mailto:pvamerl@gmail.com" \
target="_blank" class="">pvamerl@gmail.com</a>&gt; wrote:<br class=""></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">Hi \
All, <br class=""> Has anyone else experienced an immediate crash when searching for objects on a Mac \
using the Apple-f key combination?<br class=""> I can confirm that it has worked in the past without a \
crash. Neither Ctrl-f, nor selecting it from the menu appears to work for me at this time. <br class=""> \
The Crash trace is appended in the zip if anyone wants to have a look.<br class=""> </blockquote><div \
dir="auto" class=""><br class=""></div><div dir="auto" class="">Hi Peter</div><div dir="auto" \
class=""><br class=""></div><div dir="auto" class="">When you say it worked in the past, could you \
provide the exact version / git commit, and also your current version / git &nbsp;commit that has the \
bug? I made several changes to the Find Dialog in the most recent version, notably performing \
asynchronous database queries through another thread. It never crashed on my Linux system. Also curious \
if someone else can reproduce it on MacOS or if it is unique to your system.</div><div dir="auto" \
class=""><br class=""></div><div dir="auto" class="">Regards</div><div dir="auto" \
class="">Akarsh</div><div dir="auto" class=""><br class=""></div><blockquote class="gmail_quote" \
style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><br \
class=""> Cheers, <br class="">
Peter <br class="">
<br class="">
<br class="">
</blockquote></div></div>
</blockquote></div>
</div></blockquote></div><br class=""></div></div></blockquote></div></div>
</div></blockquote></div><br class=""></div></div></blockquote></div>
</div></blockquote></div><br class=""></div></div></blockquote></div></div>
</div></blockquote></div><br class=""></body></html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic