[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 4:57:20
Message-ID: 5B5B9058-0EFD-4F8F-BE25-B329CC3ED597 () gmail ! com
[Download RAW message or body]

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> 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=""><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;" class=""><!--StartFragment-->m_asyncDBManager(<span style="font-style: italic; color: rgb(120, 86, \
45);" class="">new</span><span style="color: rgb(77, 79, 82);" class=""> </span><span style="color: \
rgb(153, 0, 0);" class="">CatalogsDB</span>::<span style="color: rgb(153, 0, 0);" \
class="">AsyncDBManager</span>(<span style="color: rgb(153, 0, 0);" \
class="">CatalogsDB</span>::dso_db_path()))<!--EndFragment--></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;" class=""><!--StartFragment-->m_thread<span style="color: rgb(120, 86, 45);" \
class="">-&gt;</span>start();<!--EndFragment--></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;" \
class=""><!--StartFragment--><span style=" color:#ff8080;" class="">QThread</span>::msleep(<span style=" \
color:#8a602c;" class="">100</span>);<!--EndFragment--></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" \
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 \
class=""><br class=""></div><div><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" \
class="">mutlaqja@ikarustech.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><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" class="gmail_signature" data-smartmail="gmail_signature"><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" class="">rlancaste@gmail.com</a>&gt; wrote:<br \
class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;" 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:1px solid \
rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;" 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 style="overflow-wrap: break-word;" 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:1px solid \
rgb(204,204,204);padding-left:1ex"><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:1px solid \
rgb(204,204,204);padding-left:1ex">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:1px solid \
rgb(204,204,204);padding-left:1ex"><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></body></html>



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

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