There's an unwanted assert causing the failure in gdb/linux-thread-db.c. Around line 1675, guard the assert based on __ILP32__:
#if !defined(__ILP32__) && !defined(_ILP32) /* See comment in thread_db_update_thread_list. */ gdb_assert (!target_has_execution || thread_db_use_events ()); #endif Once the assert is removed for the X32 platform, the program can be executed under GDB.

