Limitations/Differences with a MariaDB Server Compiled for Debugging

Highlights the performance impacts and behavioral changes to expect when running a MariaDB server compiled with debug options.

circle-info

This page is focused on lower-level development: It contains technical "how-to" documentation for engineers who are actually modifying the MariaDB source code (e.g., compiling for debug, using GDB, memory leak detection in the code).

A MariaDB server configured with --with-debug=full has the following differences from a normal MariaDB server:

  • You can have maximum of 1000 tables locked at the same time in one statement. (Define MAX_LOCKS in mysys/thrlock.c). This is to detect loops in the used lists.

  • You can have maximum of 1000 threads locking the same table. (Define MAX_THREADS in mysys/thrlock.c). This is to detect loops in the used lists.

  • Deadlock detection of mutex will be done at runtime. If wrong mutex handling is found an error will be printed to the error log. (Define SAFE_MUTEX)

  • Memory overrun/underrun and not freed memory will be reported to the error log (Define SAFEMALLOC)

  • You can get a trace of what mysqld (and most other binaries) is doing by starting it with the --debug option. The trace is usually put in /tmp or C:\

This page is licensed: CC BY-SA / Gnu FDL

spinner

Last updated

Was this helpful?