Ansel is written in the C language. While C pretends to be portable (runs the same on all operating systems), many little things need to be contextually adapted to each OS using slightly different code. Also, depending on hardware and on the version of the dependencies, even on Linux, some discrepancies can occur between distributions.
That is to say that bugs are almost impossible to anticipate when programming, and the default state of a computer program is buggy. Reporting bugs properly is the only way to help cleaning up the unforseen pathological cases.
What is needed to debug ?
4 things :
- the sequence of user operations that lead to the bug (doing this, clicking that, etc.),
- the nature of the bug (segmentation fault at line xxx, crash with no warning),
- the hardware and operating system used, OpenCL driver if any, Linux kernel version, etc.
- the exact version of the software used, that is the full name of the
.exe
Windows package or.AppImage
Linux package, or the full version string that can be found in the popup by clicking the Ansel logo, in the top panel of the software.
Unexpected crashes
When Ansel crashes unexpectectdly, an ansel_bt_xxxxxx.txt
file (where xxxxxx
is an hexadecimal identifier) is usually written in the /tmp
directory on Linux, or in $USER\appData\local\temp\
on Windows. When you are lucky, it will contain the exact line of the exact file of the sourcecode responsible for the crash. This needs to be reported to the developer.
If the file is empty, please move on to the next section.
Forced crash
When you note a reproduceable crash and are lucky enough to be on Linux, you can force it to crash with better feedback by running the program within gdb
(it is typically already installed on most distributions, otherwise find the package providing it on yours and install it). gdb
will usually provide more information than the backtrace file, and may also record backtraces in situations where the above method produces an empty file.
- Start a
gdb
session, in terminal :- if using a self-built version, run
gdb /opt/ansel/bin/ansel
- if using an AppImage, run
gdb /path-to-appimage/Ansel-xxxxx-gxxxx-x86_64.AppImage
- if using a self-built version, run
- Start the software with the
run
command, from the same terminal, and reproduce your faulty sequence of operations, - When it crashes, run
bt full > ansel_bt.log
(bt
is for backtrace), and send theansel_bt.log
file just created in your home folder to the developer.
Typical bugs
- When there is no space left on the hard drive hosting your home folder, Ansel will crash fair and square at startup with a segmentation fault.
- When your system is out-of-memory (RAM) or Ansel tries to reserve more memory than what is still available, the OS will kill Ansel fair and square, without backtrace or error message. This typically happens when processing heavy editings. It can be fixed to some extent by reducing the resources used by Ansel, in the preferences.
Warnings
When starting the program in terminal, you will usually see a list of warnings linked to Gtk, like:
These can be ignored.