<div dir="ltr">I am reviving this thread, since I still am crashing in what looks like memory issues.<div><br></div><div>Note that the test I described above is now submitted into KStars source, but needs to be enabled. Here are the new debugging instructions.</div><div><br></div><div><b>Edit the test so that it is enabled, can find the data it needs, runs for 10000 iterations, and runs solving as well as star detection:</b></div><div><br></div><div>1) Using the latest KStars, edit Tests/fitsviewer/testfitsdata.cpp and comment out the line below (around line 532 in the file) so that the test is enabled:</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>#define SKIP_PARALLEL_SOLVERS_TEST</div></blockquote><div><br></div><div><div>2) You can find the data I provided in <a href="https://drive.google.com/drive/folders/1eUrcJd1IENvcRUtnwsaUNWKwKuj5G077?usp=sharing" target="_blank">https://drive.google.com/drive/folders/1eUrcJd1IENvcRUtnwsaUNWKwKuj5G077?usp=sharing</a></div><div>Download it and put it in some directory on your machine. Then change the line (around line 539)</div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>QString dir = "/home/hy/Desktop/SharedFolder/DEBUG-solver";</div></blockquote><div>to point to where you put the data.</div><div><br></div><div>3) Around line 590, change "num = 3000" to "num = 10000" </div><div><br></div><div>4) Uncomment the 3 lines that have to do with loop4 so you run the solver as well.</div><div><br></div><div>5) compile the test: "make -j12 testfitsdata"</div><div><br></div><div>6) run the test: "bin/testfitsdata testParallelSolvers"</div><div><br></div><div>This is not a "test" in the sense that it doesn't check any computations. Rather, passing is simply not crashing.</div><div><br></div><div>This is what happened when I just ran it:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>> bin/testfitsdata testParallelSolvers</div><div>********* Start testing of TestFitsData *********</div><div>Config: Using QtTest library 5.12.8, Qt 5.12.8 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 9.3.0)</div><div>PASS   : TestFitsData::initTestCase()</div><div>Running solver with /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-08.fits</div><div>QINFO  : TestFitsData::testParallelSolvers() "#0: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-30.fits HFR 2.0226"</div><div>QINFO  : TestFitsData::testParallelSolvers() "#0: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-08.fits HFR 1.98326"</div><div>QINFO  : TestFitsData::testParallelSolvers() "#1: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-34.fits HFR 2.19655"</div><div>QINFO  : TestFitsData::testParallelSolvers() "#1: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-12.fits HFR 1.96469"</div></blockquote><div>...</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>QINFO  : TestFitsData::testParallelSolvers() "#669: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-21.fits HFR 1.9854"</div><div>QINFO  : TestFitsData::testParallelSolvers() "#673: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-34.fits HFR 2.19655"</div><div>QINFO  : TestFitsData::testParallelSolvers() "#670: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-24.fits HFR 2.08071"</div><div>QINFO  : TestFitsData::testParallelSolvers() "#674: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-37.fits HFR 2.03938"</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>=== Received signal at function time: 300012ms, total time: 300013ms, dumping stack ===</div><div>QINFO  : TestFitsData::testParallelSolvers() "#671: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-27.fits HFR 2.08168"</div><div>QINFO  : TestFitsData::testParallelSolvers() "#675: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-40.fits HFR 2.12139"</div><div>GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2</div><div>Copyright (C) 2020 Free Software Foundation, Inc.</div><div>License GPLv3+: GNU GPL version 3 or later <<a href="http://gnu.org/licenses/gpl.html">http://gnu.org/licenses/gpl.html</a>></div><div>This is free software: you are free to change and redistribute it.</div><div>There is NO WARRANTY, to the extent permitted by law.</div><div>Type "show copying" and "show warranty" for details.</div><div>This GDB was configured as "x86_64-linux-gnu".</div><div>Type "show configuration" for configuration details.</div><div>For bug reporting instructions, please see:</div><div><<a href="http://www.gnu.org/software/gdb/bugs/">http://www.gnu.org/software/gdb/bugs/</a>>.</div><div>Find the GDB manual and other documentation resources online at:</div><div>    <<a href="http://www.gnu.org/software/gdb/documentation/">http://www.gnu.org/software/gdb/documentation/</a>>.</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>For help, type "help".</div><div>Type "apropos word" to search for commands related to "word".</div><div>Attaching to process 37916</div><div>(gdb) === End of stack trace ===</div><div>QFATAL : TestFitsData::testParallelSolvers() Test function timed out</div><div>FAIL!  : TestFitsData::testParallelSolvers() Received a fatal error.</div><div>   Loc: [Unknown file(0)]</div><div>Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 300315ms</div><div>********* Finished testing of TestFitsData *********</div><div>Aborted (core dumped)</div></blockquote><div><br></div><div><br></div><div>FWIW, I found this page that may be useful in finding memory issues. (Valgrind has not helped when I've tried in the past).</div><div><a href="https://www.ics.com/blog/explore-memory-and-resource-leak-detection-tools">https://www.ics.com/blog/explore-memory-and-resource-leak-detection-tools</a><br></div><div><br></div><div><br></div><div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 4, 2022 at 7:54 PM Hy Murveit <<a href="mailto:murveit@gmail.com" target="_blank">murveit@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Folks,</div><div><br></div><div>I believe there are rare but often-enough memory issues when running stellarsolver.</div><div>I can't track it down, so I created this test to help us debug it.</div><div><br></div><div>If you have time, could you take a look?</div><div><br></div><div>I've create a branch with a test which runs stellarsolver star detection in 3 parallel threads<br></div><div><a href="https://invent.kde.org/murveit/kstars/-/tree/solver-test1" target="_blank">https://invent.kde.org/murveit/kstars/-/tree/solver-test1</a><br></div><div>(if you uncomment some code, a 4th thread with a solver will run too).</div><div><br></div><div>To run this, you need to also download some data that it points to:</div><div>See the google drive folder: </div><div><a href="https://drive.google.com/drive/folders/1eUrcJd1IENvcRUtnwsaUNWKwKuj5G077?usp=sharing" target="_blank">https://drive.google.com/drive/folders/1eUrcJd1IENvcRUtnwsaUNWKwKuj5G077?usp=sharing</a><br></div><div>Download those files into some directory on your machine.</div><div><br></div><div>You'd then edit near the end of kstars/Tests/fitsviewer/testfitsdata.cpp at the start of the test testParallelSolvers and change the directory there where you've put the files from my drive folder.</div><div><br></div><div>Then you can compile testfitsdata and run it as:</div><div>bin/testfitsdata testParallelSolvers</div><div><br></div><div>It will detect stars for 3 sets of data. </div><div><ul><li>200 guider files in thread 1</li><li>200 more guider files in thread 2</li><li>30 subs in thread3</li><li>(commented out) 30 guider files using the solver</li></ul></div><div>It takes a minute or two.</div><div><br></div><div>If I run this a few times, I usually get some kind of memory corruption error. Can't seem to figure it out yet, though. I've compiled with the latest KStars, stellarsolver and indi-core.</div><div><br></div><div>Here's an example of one run that failed:</div><div><br></div><div>> bin/testfitsdata testParallelSolvers<br>********* Start testing of TestFitsData *********<br>Config: Using QtTest library 5.12.8, Qt 5.12.8 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 9.3.0)<br>PASS   : TestFitsData::initTestCase()<br>QINFO  : TestFitsData::testParallelSolvers() org.kde.kstars.fits: Loading file  "/home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-08.fits"<br>QINFO  : TestFitsData::testParallelSolvers() org.kde.kstars.fits: Loading file  "/home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-30.fits"<br>QINFO  : TestFitsData::testParallelSolvers() org.kde.kstars.fits: Loading file  "/home/hy/Desktop/SharedFolder/DEBUG-solver/m5_Light_LPR_120_secs_2022-03-12T04-44-56_201.fits"<br>Found one coordinate representation.<br>Found one coordinate representation.<br>QINFO  : TestFitsData::testParallelSolvers() "#0: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-08.fits HFR 1.98326"<br>QINFO  : TestFitsData::testParallelSolvers() org.kde.kstars.fits: Loading file  "/home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-12.fits"<br>QINFO  : TestFitsData::testParallelSolvers() "#0: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-30.fits HFR 2.0226"<br>QINFO  : TestFitsData::testParallelSolvers() org.kde.kstars.fits: Loading file  "/home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-34.fits"<br></div><div>...</div><div>QINFO  : TestFitsData::testParallelSolvers() org.kde.kstars.fits: Loading file  "/home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-46.fits"<br>Found one coordinate representation.<br>Found one coordinate representation.<br>QINFO  : TestFitsData::testParallelSolvers() "#102: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-21.fits HFR 1.9854"<br>QINFO  : TestFitsData::testParallelSolvers() org.kde.kstars.fits: Loading file  "/home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-24.fits"<br>QINFO  : TestFitsData::testParallelSolvers() "#101: /home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-46.fits HFR 2.04488"<br>QINFO  : TestFitsData::testParallelSolvers() org.kde.kstars.fits: Loading file  "/home/hy/Desktop/SharedFolder/DEBUG-solver/guide_frame_00-20-30.fits"<br>Found one coordinate representation.<br>corrupted size vs. prev_size<br>Found 0 coordinate representations.<br>Aborted (core dumped)<br></div></div>
</blockquote></div>