[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=""> </div>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.<div class=""><br class=""></div><div \
class="">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:</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. 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:</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="">-></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! 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!</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. 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 <<a href="mailto:mutlaqja@ikarustech.com" \
class="">mutlaqja@ikarustech.com</a>> 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 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 \
<<a href="mailto:rlancaste@gmail.com" class="">rlancaste@gmail.com</a>> 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. \
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.</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. 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 <<a \
href="mailto:akarshsimha@gmail.com" target="_blank" class="">akarshsimha@gmail.com</a>> \
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 <<a \
href="mailto:rlancaste@gmail.com" target="_blank" class="">rlancaste@gmail.com</a>> 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. \
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. </div><div class=""><br \
class=""></div><div class="">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.</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 <<a \
href="mailto:john.e.evans.email@gmail.com" target="_blank" class="">john.e.evans.email@gmail.com</a>> \
wrote:</div><br class=""><div class=""><div dir="ltr" class="">I have the same problem with 3.6.0. \
Crashes everytime 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 scheduler enter some text in the object field (doesn't matter what) and hit the + 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 <<a href="mailto:akarshsimha@gmail.com" \
target="_blank" class="">akarshsimha@gmail.com</a>> 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 <<a \
href="mailto:pvamerl@gmail.com" target="_blank" class="">pvamerl@gmail.com</a>> 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 \
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