Unable to compile with error in je_safety_check_set_abort

Good morning. I’ve been running a 3.3.5 instance for some months on Manjaro Linux. Recently an update to MariaDB prevented launching which required a recompilation. When I went to recompile (with my old existing sources) I got an error in jemalloc_preamble.h:

In file included from /home/master/WoW/TrinityCore/dep/jemalloc/src/safety_check.c:1:
/home/master/WoW/TrinityCore/dep/jemalloc/include/jemalloc/internal/jemalloc_preamble.h:20:25: error: conflicting types for ‘je_safety_check_set_abort’; have ‘void(void (*)(const char *))’
   20 | #  define JEMALLOC_N(n) je_##n
      |                         ^~~
/home/master/WoW/TrinityCore/dep/jemalloc/include/jemalloc/internal/private_namespace.h:354:32: note: in expansion of macro ‘JEMALLOC_N’
  354 | #define safety_check_set_abort JEMALLOC_N(safety_check_set_abort)
      |                                ^~~~~~~~~~
/home/master/WoW/TrinityCore/dep/jemalloc/src/safety_check.c:6:6: note: in expansion of macro ‘safety_check_set_abort’
    6 | void safety_check_set_abort(void (*abort_fn)(const char *)) {
      |      ^~~~~~~~~~~~~~~~~~~~~~
/home/master/WoW/TrinityCore/dep/jemalloc/include/jemalloc/internal/jemalloc_preamble.h:20:25: note: previous declaration of ‘je_safety_check_set_abort’ with type ‘void(void (*)(void))’
   20 | #  define JEMALLOC_N(n) je_##n
      |                         ^~~
/home/master/WoW/TrinityCore/dep/jemalloc/include/jemalloc/internal/private_namespace.h:354:32: note: in expansion of macro ‘JEMALLOC_N’
  354 | #define safety_check_set_abort JEMALLOC_N(safety_check_set_abort)
      |                                ^~~~~~~~~~
/home/master/WoW/TrinityCore/dep/jemalloc/include/jemalloc/internal/safety_check.h:6:6: note: in expansion of macro ‘safety_check_set_abort’
    6 | void safety_check_set_abort(void (*abort_fn)());
      |      ^~~~~~~~~~~~~~~~~~~~~~


Which results in an Error 2 on compiling. I pulled latest sources and tried to build again with the same error. I peeked at the code but its out of my depth.

I got no cmake errors, and I pulled into a fresh directory and built with a target directory that was new as well. My cmake options were:

cmake ../ -DCMAKE_INSTALL_PREFIX=/home/master/WoW/test -DTOOLS=1 -DSERVERS=1 -DWITH_WARNINGS=1

And the cmake output was:

cmake ../ -DCMAKE_INSTALL_PREFIX=/home/master/WoW/test -DTOOLS=1 -DSERVERS=1 -DWITH_WARNINGS=1
-- Detected 64-bit platform
-- Detected amd64 processor architecture
-- UNIX: Configuring uninstall target
-- UNIX: Created uninstall target
-- UNIX: Using default system linker
-- UNIX: Detected compiler: /usr/bin/cc
-- GCC: Minimum version required is 11.1.0, found 15.1.1 - ok!
-- GCC: SFMT enabled, SSE2 flags forced
-- GCC: All warnings enabled
-- Using mysql-config: /usr/bin/mysql_config
-- Found MySQL:   found components: binary
-- Found MySQL executable: /usr/bin/mysql

* TrinityCore revision   : ecb78919ade4 2025-08-07 23:55:53 +0200 (master branch)
* TrinityCore buildtype  : RelWithDebInfo

* Install core to        : /home/master/WoW/test
* Install configs to     : /home/master/WoW/test/etc

* Build world/auth       : Yes (default)
* Build with scripts     : Yes (static)
* Build map/vmap tools   : Yes (default)
* Build unit tests       : No (default)
* Build core w/PCH       : Yes (default)
* Build scripts w/PCH    : Yes (default)
* Show all warnings      : Yes
* Stop build on warning  : No  (default)
* Use coreside debug     : No  (default)
* Show source tree       : Yes (hierarchical)
* Use GIT revision hash  : Yes (default)

-- Using mysql-config: /usr/bin/mysql_config
-- Found MySQL: /usr/lib/libmariadb.so  found components: lib
-- Found MySQL library: /usr/lib/libmariadb.so
-- Found MySQL headers: /usr/include/mysql
-- Found Readline library: /usr/lib/libreadline.so
-- Found Readline headers: /usr/include

* Script configuration (static):
    |
    +- worldserver
    |   +- Argus
    |   +- Battlefield
    |   +- Battlegrounds
    |   +- BrokenIsles
    |   +- Commands
    |   +- Custom
    |   +- Draenor
    |   +- DragonIsles
    |   +- EasternKingdoms
    |   +- Events
    |   +- ExilesReach
    |   +- Kalimdor
    |   +- KhazAlgar
    |   +- KulTiras
    |   +- Maelstrom
    |   +- Northrend
    |   +- OutdoorPvP
    |   +- Outland
    |   +- Pandaria
    |   +- Pet
    |   +- Shadowlands
    |   +- Spells
    |   +- World
    |   +- Zandalar
    |

-- Configuring done (2.1s)
-- Generating done (0.2s)
-- Build files have been written to: /home/master/WoW/TrinityCore/build

So at this point I’m at a bit of a loss. Can anyone help me, please?

I ran into this on openSUSE Tumbleweed a few mins ago. I added -DNOJEM=1 (figured it looked safe to disable from hint)

cmake ~/'Projects/TrinityCore-335/src' -DCMAKE_INSTALL_PREFIX=~/'Projects/TrinityCore-335/run' -DCMAKE_BUILD_TYPE='Release' -DWITHOUT_METRICS='1' -DTOOLS='1' -DNOJEM='1'

GCC 15 and Clang 20 both had the jemalloc error. With NOJEM=1 Clang got a littlefurther before another error; GCC compiled it fine! (no errors but will test server in a bit)

I ended up setting up a debian distrobox to compile and run from.

1 Like

Got the same issue on opensuse. I just commented out safety_check_set_abort and safety_check_abort, and it compiled fine. These do not seem to be used anywhere.

1 Like