brummer10 / guitarix

guitarix virtual versatile amplification for Jack/Linux
254 stars 28 forks source link

-DGSEAL_ENABLE flag causes bug in splash screen and high CPU usage #10

Closed Rippert closed 4 years ago

Rippert commented 4 years ago

I was trying to use the --cxxflags-release switch while building guitarix, and I noticed that when I do, the splash screen doesn't come up when I run the executable. Instead I see a mlock 1505172 bytes or similar, on the command line. With the same flags, but using the --cxxflags switch, I do get the splash screen and no command line messages. Also, the xruns and CPU usage are through the roof for even simple presets with the --cxxflags-release switch, but not with the -cxxflags switch.

The only difference I see between the two is that the --cxxflags switch sets a -NDEBUG flag, but the --cxxflags-release sets a -DGSEAL_ENABLE flag.

This is on a raspberry pi. I tested in both archlinuxarm and raspberian buster.

brummer10 commented 4 years ago

When you use this options, you overwrite the defaults. Means the default flags for --cxxflags-release been -O3 -DNDEBUG and for the --cxxflags it's -Wall -DGSEAL_ENABLE. Both switches will be used by default when you didn't give the --debug switch. The most important flag here is the -DNDEBUG, when you overwrite the --cxxflags-release flags, you should give -DNDEBUG in addition. Because the debugging version of guitarix, which is build when the flag NDEBUG isn't set, enable a lot of internal test, measurements, and printouts ( for example the mlock value), which explain the higher CPU use. This helps us a lot to find issues but isn't really nice to be used as default. In the debugging version the splash is disabled so that it didn't hide error messages. So, when you will set your own cxxflags for your pi, best use the --cxxflags and put the defaults within. --cxxflags=-Wall -DGSEAL_ENABLE your_flags your_flags`

Rippert commented 4 years ago

OK. Thanks. I'll try recompiling as you suggest today.

Rippert commented 4 years ago

That did work. Thanks again Hermann.