-
Notifications
You must be signed in to change notification settings - Fork 135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compiling Brewtarget from source for the first time produces a Segmentation Fault #669
Comments
Hi, Thanks for the detailed bug report, and for including logs and stack trace. This is exactly the place to raise it. From the stack trace, it looks like the program found an old version of the database file and was trying to upgrade it. When you deleted the contents of I suspect there's a bug somewhere where we're doing something silly with a shared pointer (eg creating two unrelated shared pointers to the same object) which will be my error, and that your temporary edit suppressed the symptoms (viz an object being prematurely deleted). If, by any chance, you still have a backup copy of your old Brewtarget DB, it would probably help us reproduce the problem. Otherwise we might see if @mikfire has some old DBs, has he has helped enormously with bug-finding in the upgrade process. |
Hi @matty0ung Thanks for your quick response. I scrounged up an old database from 2020. It spits out a bunch of errors similar to my previous output but I don't hit a seg fault. I'm still confused as to where and why this seg fault occurred... I can also see if I have a more recent database. Output: https://pastebin.com/raw/cj95Vh7B Database used: https://drive.google.com/file/d/1FiJ38Qnb1HTpnexeLI-tC6GVziEcWPhy/view?usp=sharing |
Thanks for that. So, this latest one is a different issue. It seems some of the data in that DB file is not quite as we expect. But we could probably add something to the code that would fix things. I'll have a look. (By way of background, for Hops, Fermentables and so forth, we store two types of record. One is the "parent" record that describes, eg, a particular Hop in general. Then, every time we use that Hop in a recipe we create a "child" record that records the use of that hop. This also means, you can edit, eg, alpha acid on a hop use in a recipe without changing the alpha acid values for other uses of that hop in other recipes. Long story short, each hop (or fermentable, or misc or yeast) record in the DB is either a "parent" or a "child". The error we're seeing with this 2020 DB is that there are some records that are trying to be both parent and child. The fix is probably to either make them only parent records or to split each of them into separate parent and child records.) If you do also find a DB that creates the seg fault that would be great too, obvs. |
I think the "Fermentable # 382 is its own parent!" and similar errors are related to #657 - or at least I would expect to see the same "Fermentable # 382 is unexpectedly already used in recipe # Y" warning logged if we started trying to add Fermentable 382 to another recipe. I have a bit of an idea for how to add code to make things more robust when we encounter "data errors" such as this, but I think I'd better tackle them in version 3.1 rather than version 3.0.x because it's not just a quick fix. (Essentially, the idea is that, when we hit "X is its own parent" we should create a clone of X and make that clone the parent of X. Ideal place to trigger this would be |
Sorry for the delay on this one. I've managed to reproduce the error. I built a new, clean Ubuntu 22.04 image in Virtualbox. I compiled the latest brewtarget and launched it without creating The first run of launching Brewtarget complained about not being able to open the database. I then ran it again and the segmentation fault returned. Please find attached the output of the two runs. |
Thanks, that's useful diagnostic. Looks like there's a problem with the order in which things are getting initialised. Will have a look. |
I've added some more diagnostics to the code and, hopefully, improved the logic it uses for working out where files are. The output you pasted suggested the code wasn't finding some of the "standard" locations (eg where default DB lives etc). Once #677 is approved, if you get a chance to try again, that would be great. (It might still give errors, but hopefully we'll have additional clues about the root cause!) |
Hi @matty0ung I've pulled, recompiled and produced the same error by running Brewtarget twice. I've attached the logs below. To do this I did the following.
Please let me know if there is something else I can do. |
Thanks for bearing with us and providing the extra diagnostics and info. The good news is I think there's a simple fix for the issue. You just need one extra step in your build process. After running Let us know how you get on. Meanwhile, I'll have a look at our build scripts to see if we can make them issue a prompt for the extra build step. |
Ah, that solved it. I had just assumed that compiling and running locally would be enough. |
With that in mind, I think I'm happy to close this issue. Assuming it's expected behaviour that Let me know your thoughts @matty0ung |
Very glad to hear you got things working. I'll leave this issue open for now, as I think there are still some start-up things we could be doing better. (Looks like PersistentSettings is returning an empty string instead of |
Closing now that release 3.0.4 is out. |
Hi,
Please let me know if I am reporting this bug incorrectly. Also, I'm not a cpp programmer so please forgive my ignorance in some of these areas.
I compiled the
devel
branch from source and was getting Segmentation Fault errors. This appears to be when loading the database. Running brewtarget through gdb and doing a backtrace gave me some insight into where to go to try and make progress. The output can be found here https://pastebin.com/raw/GnRQ8tYzMaking an edit to
src/database/ObjectStore.cpp:1490
allowed me to finish the initial setup and Brewtarget now launches fine. The edits I made are below.Once Brewtarget launched correctly I restored this file to original. But Brewtarget continues to launch correctly. I now cannot recreate the issue.
I suspect that the issue lies in creating the database for the first time. I have tried deleting
~/.config/brewtarget
and re-cloning and compiling. Are there any other locations where brewtarget stores information?Any insight would be appreciated.
Some possibly relevant information about my system:
Operating System: Ubuntu 22.04
Boost version: 1.80
Branch: devel
The text was updated successfully, but these errors were encountered: