Crash caused by signal #6: Aborted

Version: Dungeon Crawl Stone Soup 0.33-a0-554-g008097b4cb
Platform: unix
Bits: 64
Game mode: normal
Tiles: online

Seed: 3466044356038297940, deterministic pregen: 1
Command line: /usr/games/crawl-git-008097b4cb -name Coo1 -rc /dgldir/rcfiles/crawl-git/Coo1.rc -macro /dgldir/rcfiles/crawl-git/Coo1.macro -morgue /dgldir/morgue/Coo1/ -webtiles-socket /crawl-master/webserver/sockets/Coo1:2024-12-11.12:50:34.sock -await-connection

RC options:
restart_after_game = false


Crash caused by signal #6: Aborted

Obtained 24 stack frames.
/usr/games/crawl-git-008097b4cb(_Z17write_stack_traceP8_IO_FILE+0x3e) [0x5882d70dadae]: write_stack_trace(_IO_FILE*)
/usr/games/crawl-git-008097b4cb(_Z13do_crash_dumpv+0x43a) [0x5882d70e8e4a]: do_crash_dump()
/usr/games/crawl-git-008097b4cb(_Z20crash_signal_handleri+0x1fa) [0x5882d70db28a]: crash_signal_handler(int)
/lib/x86_64-linux-gnu/libc.so.6(+0x45320) [0x7984da96c320]: 
/lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11c) [0x7984da9c5b1c]: 
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x1e) [0x7984da96c26e]: 
/lib/x86_64-linux-gnu/libc.so.6(abort+0xdf) [0x7984da94f8ff]: 
/lib/x86_64-linux-gnu/libc.so.6(+0x297b6) [0x7984da9507b6]: 
/lib/x86_64-linux-gnu/libc.so.6(+0xa8fe5) [0x7984da9cffe5]: 
/lib/x86_64-linux-gnu/libc.so.6(+0xab37c) [0x7984da9d237c]: 
/lib/x86_64-linux-gnu/libc.so.6(__libc_free+0x7e) [0x7984da9d4d9e]: 
/usr/games/crawl-git-008097b4cb(_ZN12monster_infoD1Ev+0x8f) [0x5882d709b47f]: monster_info::~monster_info()
/usr/games/crawl-git-008097b4cb(_ZN14TilesFramework10_send_cellERK9coord_defRK13screen_cell_tS5_RK8map_cellS8_RSt3mapIjS0_St4lessIjESaISt4pairIKjS0_EEEb+0xf33) [0x5882d784ad23]: TilesFramework::_send_cell(coord_def const&, screen_cell_t const&, screen_cell_t const&, map_cell const&, map_cell const&, std::map<unsigned int, coord_def, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, coord_def> > >&, bool)
/usr/games/crawl-git-008097b4cb(_ZN14TilesFramework9_send_mapEb+0x486) [0x5882d784b4e6]: TilesFramework::_send_map(bool)
/usr/games/crawl-git-008097b4cb(_ZN14TilesFramework6redrawEv+0xf3) [0x5882d784c603]: TilesFramework::redraw()
/usr/games/crawl-git-008097b4cb(_Z8getch_ckv+0x111) [0x5882d78518c1]: getch_ck()
/usr/games/crawl-git-008097b4cb(+0x789cb5) [0x5882d73b8cb5]: 
/usr/games/crawl-git-008097b4cb(_Z25getch_with_command_macrosv+0x210) [0x5882d73bca60]: getch_with_command_macros()
/usr/games/crawl-git-008097b4cb(+0xc2fb24) [0x5882d785eb24]: 
/usr/games/crawl-git-008097b4cb(+0xc30505) [0x5882d785f505]: 
/usr/games/crawl-git-008097b4cb(main+0x1f7) [0x5882d70146f7]: 
/lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca) [0x7984da9511ca]: 
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b) [0x7984da95128b]: 
/usr/games/crawl-git-008097b4cb(_start+0x25) [0x5882d7015115]: 

Trying to run gdb.
GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007984daa377a7 in __GI___wait4 (pid=1093698, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30
#0  0x00007984daa377a7 in __GI___wait4 (pid=1093698, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30
        sc_ret = -512
        sc_ret = <optimized out>
#1  0x00005882d70db45c in call_gdb (file=0x7984dab2b4e0 <_IO_2_1_stderr_>) at crash.cc:438
        gdb = <optimized out>
        attach_cmd = "attach 1090500\000\000\000\000\000"
#2  0x00005882d70e8e68 in do_crash_dump () at dbg-asrt.cc:677
        t = 1733921483
        dir = "/dgldir/morgue/Coo1/"
        name = "/dgldir/morgue/Coo1/crash-Coo1-20241211-125123.txt", '\000' <repeats 129 times>
        signal_info = "Crash caused by signal #6: Aborted"
        cause_msg = "Crash caused by signal #6: Aborted"
        file = 0x7984dab2b4e0 <_IO_2_1_stderr_>
#3  0x00005882d70db28a in crash_signal_handler (sig_num=6) at crash.cc:198
No locals.
#4  <signal handler called>
No locals.
#5  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = <optimized out>
        old_mask = {__val = {0}}
        ret = <optimized out>
        pd = <optimized out>
        old_mask = <optimized out>
        ret = <optimized out>
        tid = <optimized out>
        ret = <optimized out>
        resultvar = <optimized out>
        resultvar = <optimized out>
        __arg3 = <optimized out>
        __arg2 = <optimized out>
        __arg1 = <optimized out>
        _a3 = <optimized out>
        _a2 = <optimized out>
        _a1 = <optimized out>
        __futex = <optimized out>
        resultvar = <optimized out>
        __arg3 = <optimized out>
        __arg2 = <optimized out>
        __arg1 = <optimized out>
        _a3 = <optimized out>
        _a2 = <optimized out>
        _a1 = <optimized out>
        __futex = <optimized out>
        __private = <optimized out>
        __oldval = <optimized out>
#6  __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
No locals.
#7  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
No locals.
#8  0x00007984da96c26e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
        ret = <optimized out>
#9  0x00007984da94f8ff in __GI_abort () at ./stdlib/abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x20, sa_sigaction = 0x20}, sa_mask = {__val = {97319000880560, 97319000892680, 281479271677962, 140736498565631, 140736512009376, 140736512009248, 97318982753773, 140736512009296, 97318981622615, 206, 0, 140736512009168, 97318990476928, 140736512009280, 97318990476928, 140736512009440}}, sa_flags = 714259456, sa_restorer = 0x0}
#10 0x00007984da9507b6 in __libc_message_impl (fmt=fmt@entry=0x7984daaf58d7 "%s\n") at ../sysdeps/posix/libc_fatal.c:132
        ap = {{gp_offset = 16, fp_offset = 0, overflow_arg_area = 0x7fffc5ce2520, reg_save_area = 0x7fffc5ce24b0}}
        fd = 2
        iov = {{iov_base = 0x7984daaf3672, iov_len = 23}, {iov_base = 0x7984daaf58d9, iov_len = 1}, {iov_base = 0x1d2c, iov_len = 4294967293}, {iov_base = 0x0, iov_len = 140736512007192}, {iov_base = 0x7fffc5ce2940, iov_len = 97318983472088}, {iov_base = 0x5882d7d6bb08 <tiles+72>, iov_len = 97318990482376}, {iov_base = 0x5882d8c5c200, iov_len = 8811472961506819072}}
        iovcnt = <optimized out>
        total = <optimized out>
        cp = <optimized out>
#11 0x00007984da9cffe5 in malloc_printerr (str=str@entry=0x7984daaf3672 "free(): invalid pointer") at ./malloc/malloc.c:5772
No locals.
#12 0x00007984da9d237c in _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at ./malloc/malloc.c:4507
        size = <optimized out>
        fb = <optimized out>
#13 0x00007984da9d4d9e in __GI___libc_free (mem=0x5882d7db8b70 <you+5360>) at ./malloc/malloc.c:3398
        ar_ptr = <optimized out>
        p = 0x5882d7db8b60 <you+5344>
        err = 2
#14 0x00005882d709b47f in std::default_delete<item_def>::operator() (this=<optimized out>, __ptr=0x5882d7db8b70 <you+5360>) at /usr/include/c++/13/bits/allocator.h:184
No locals.
#15 std::default_delete<item_def>::operator() (__ptr=0x5882d7db8b70 <you+5360>, this=<optimized out>) at /usr/include/c++/13/bits/unique_ptr.h:93
No locals.
#16 std::unique_ptr<item_def, std::default_delete<item_def> >::~unique_ptr (this=0x7fffc5ce27f8, __in_chrg=<optimized out>) at /usr/include/c++/13/bits/unique_ptr.h:404
        __ptr = @0x7fffc5ce27f8: 0x5882d7db8b70 <you+5360>
#17 monster_info::~monster_info (this=0x7fffc5ce2650, __in_chrg=<optimized out>) at /home/crawl-dev/dgamelaunch-config/crawl-build/crawl-git-repository/crawl-ref/source/mon-info.h:309
No locals.
#18 0x00005882d784ad23 in TilesFramework::_send_cell (this=this@entry=0x5882d7d6bac0 <tiles>, gc=..., current_sc=..., next_sc=..., current_mc=..., next_mc=..., new_monster_locs=std::map with 0 elements, force_full=false) at tileweb.cc:1710
        minfo = {<monster_info_base> = {pos = {x = 0, y = 0}, mb = {_vptr.FixedBitVector = 0x5882d7b81b28 <vtable for FixedBitVector<189u>+16>, data = std::bitset = {[152] = 1}}, mname = "", type = MONS_PLAYER, base_type = MONS_PLAYER, {number = 0, num_heads = 0, slime_size = 0, is_active = 0}, _colour = -1, ghost_colour = -685750250, attitude = ATT_HOSTILE, threat = MTHRT_UNDEF, dam = MDAM_OKAY, fire_blocker = DNGN_UNSEEN, description = "", quote = "", holi = {<_enum_bitfield_exponent_base<5, true>> = {static last_exponent = 5}, flags = 16}, mintel = I_BRAINLESS, hd = 0, ac = 0, ev = 0, base_ev = 0, sh = 0, mr = 10, mresists = 4206616, can_see_invis = false, mitemuse = MONUSE_NOTHING, mbase_speed = 0, menergy = {move = 10 '\n', swim = 10 '\n', attack = 10 '\n', missile = 10 '\n', spell = 10 '\n'}, props = {<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, CrawlStoreValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, CrawlStoreValue> > >> = std::map with 1 element = {["monster_tile"] = {type = SV_INT, flags = 0 '\000', val = {boolean = 52, byte = 52 '4', _short = 6452, _int = 6452, _float = 9.04117769e-42, _int64 = 6452, ptr = 0x1934}}}, <No data fields>}, constrictor_name = "", constricting_name = std::vector of length 0, capacity 0, spells = std::vector of length 0, capacity 0, attack = {{type = AT_NONE, flavour = AF_PLAIN, damage = 0}, {type = AT_NONE, flavour = AF_PLAIN, damage = 0}, {type = AT_NONE, flavour = AF_PLAIN, damage = 0}, {type = AT_NONE, flavour = AF_PLAIN, damage = 0}}, can_go_frenzy = false, can_feel_fear = 188, sleepwalking = 146, backlit = 42, umbraed = 249, client_id = 0, summoner_id = 0}, inv = {std::unique_ptr<item_def> = {get() = 0x5882d7db8b70 <you+5360>}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}}, i_ghost = {species = 3635977312, job = 22658, religion = 714259456, best_skill = 2051580921, best_skill_rank = 29, xl_rank = 0, damage = 0, ac = 0}}
        item = <optimized out>
        mcache_idx = <optimized out>
        entry = <optimized out>
        player_doll_changed = <optimized out>
        result = {parts = 0x5882d8c28610}
        next_pc = @0x7984da75eaa8: {num_dngn_overlay = 1, dngn_overlay = {mData = {2409, 0, 0, 0, 98239962, 0, 98502110, 0, 0, 0, 0, 7, 0, 0, 458752, 1001, 6553749, 0, 0, 0}}, fg = 531213, bg = 4, flv = {floor_idx = 0, wall_idx = 0, feat_idx = 0, floor = 4, wall = 1000, feat = 0, special = 20}, cloud = 0, icons = std::set with 0 elements, map_knowledge = {flags = 66, _feat = DNGN_FLOOR, _feat_colour = 0 '\000', _trap = TRAP_UNASSIGNED, _cloud = 0x0, _item = 0x5882d893e290, _mons = 0x0}, is_highlighted_summoner = false, is_bloody = false, is_silenced = false, halo = 0 '\000', is_sanctuary = false, is_blasphemy = false, is_liquefied = false, mangrove_water = false, awakened_forest = false, orb_glow = 0 '\000', blood_rotation = 0 '\000', old_blood = false, travel_trail = 0 '\000', quad_glow = false, disjunct = 0 '\000', has_bfb_corpse = false}
        fg_changed = false
        overlays_changed = <optimized out>
        current_pc = @0x5882d914ff08: {num_dngn_overlay = 1, dngn_overlay = {mData = {2409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32775, 0, 0, 0, 105842254, 0, 106366550, 0}}, fg = 531213, bg = 4, flv = {floor_idx = 0, wall_idx = 0, feat_idx = 0, floor = 4, wall = 1000, feat = 0, special = 20}, cloud = 0, icons = std::set with 0 elements, map_knowledge = {flags = 66, _feat = DNGN_FLOOR, _feat_colour = 0 '\000', _trap = TRAP_UNASSIGNED, _cloud = 0x0, _item = 0x5882d86be880, _mons = 0x0}, is_highlighted_summoner = false, is_bloody = false, is_silenced = false, halo = 0 '\000', is_sanctuary = false, is_blasphemy = false, is_liquefied = false, mangrove_water = false, awakened_forest = false, orb_glow = 0 '\000', blood_rotation = 0 '\000', old_blood = false, travel_trail = 0 '\000', quad_glow = false, disjunct = 0 '\000', has_bfb_corpse = false}
        fg_idx = <optimized out>
        in_water = false
        mf = <optimized out>
        glyph = <optimized out>
#19 0x00005882d784b4e6 in TilesFramework::_send_map (this=this@entry=0x5882d7d6bac0 <tiles>, force_full=force_full@entry=false) at tileweb.cc:1889
        gc = {x = 24, y = 44}
        sc = <optimized out>
        mc = <optimized out>
        x = 24
        y = 44
        no_rentry = {val = @0x5882d7d6bb32, oldval = false}
        new_monster_locs = std::map with 0 elements
        default_cell = {glyph = 32 U' ', colour = 7, flash_colour = 0, flash_alpha = 0, tile = {num_dngn_overlay = 0, dngn_overlay = {mData = {0, -683412033, 22658, -976344624, 32767, -674186368, 22658, -654357616, 22658, 40, 0, 40, 0, 714259456, 2051580921, -976344576, 32767, 7, 0, 1851877475}}, fg = 0, bg = 262144, flv = {floor_idx = 0, wall_idx = 0, feat_idx = 0, floor = 0, wall = 0, feat = 0, special = 0}, cloud = 0, icons = std::set with 0 elements, map_knowledge = {flags = 0, _feat = DNGN_UNSEEN, _feat_colour = 0 '\000', _trap = TRAP_UNASSIGNED, _cloud = 0x0, _item = 0x0, _mons = 0x0}, is_highlighted_summoner = false, is_bloody = false, is_silenced = false, halo = 0 '\000', is_sanctuary = false, is_blasphemy = false, is_liquefied = false, mangrove_water = false, awakened_forest = false, orb_glow = 0 '\000', blood_rotation = 0 '\000', old_blood = false, travel_trail = 0 '\000', quad_glow = false, disjunct = 0 '\000', has_bfb_corpse = false}}
        default_map_cell = {flags = 0, _feat = DNGN_UNSEEN, _feat_colour = 0 '\000', _trap = TRAP_UNASSIGNED, _cloud = 0x0, _item = 0x0, _mons = 0x0}
        last_gc = {x = 31, y = 42}
        send_gc = false
        flash_colour = 0
#20 0x00005882d784c603 in TilesFramework::redraw (this=this@entry=0x5882d7d6bac0 <tiles>) at tileweb.cc:2205
No locals.
#21 0x00005882d78518c1 in _get_key_from_curses () at libunix.cc:527
        c = 3636580792
        c = <optimized out>
        c = <optimized out>
#22 getch_ck () at libunix.cc:616
        c = <optimized out>
#23 0x00005882d73b8cb5 in _getch_mul () at macro.cc:841
        keys = std::deque with 0 elements
        a = /build/gdb-1WjiBe/gdb-15.0.50.20240403/gdb/utils.c:704: internal-error: virtual memory exhausted: can't allocate 32768 bytes.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) [answered Y; input not from terminal]

Compilation info:
<<<<<<<<<<<
Compiled with GCC 13.2.0
Build platform: x86_64-linux-gnu
Platform: x86_64-linux-gnu
CFLAGS: -O2 -pipe -DUSE_TILE -DUSE_TILE_WEB -Wall -Wformat-security -Wundef -Wextra -Wno-missing-field-initializers -Wno-implicit-fallthrough -Wno-type-limits -Wno-uninitialized -Wno-array-bounds -Wno-format-zero-length -Wmissing-declarations -Wredundant-decls -Wno-parentheses -Wwrite-strings -Wshadow -pedantic -Wuninitialized -Iutil -I. -isystem /usr/include/lua5.1 -g -DWIZARD -DASSERTS -DREGEX_PCRE -DCLUA_BINDINGS -DDGAMELAUNCH -DSAVE_DIR_PATH="/crawl-master/crawl-git-008097b4cb/saves" -DSHARED_DIR_PATH="/crawl-master/crawl-git/saves" -DDATA_DIR_PATH="/crawl-master/crawl-git-008097b4cb/data/" -DWEB_DIR_PATH="/crawl-master/crawl-git-008097b4cb/data/web/" -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600
LDFLAGS: -rdynamic -fuse-ld=gold -O2
>>>>>>>>>>>

Place info:
branch = 0, depth = 1

Level id: D:1
Level build method = random_map_for_place, level layout type  = corridors, absdepth0 = 0
Level vaults:
    nzn_arrival_crosshair
    layout_loops_cross
    serial_shops
    shop
    minmay_octomino_c4

Markers:
<<<<<<<<<<<<<<<<<<<<<<
Marker #0, type 0 at (32, 27): feature (stone_stairs_up_i)
>>>>>>>>>>>>>>>>>>>>>>

Messages:
<<<<<<<<<<<<<<<<<<<<<<
Welcome, Coo1 the Armataur Conjurer.
The sublime Orb of Zot lies far below, as if waiting for you to find it.
Press ? for a list of commands and other information.
Found a staircase leading out of the dungeon.
Saving game... please wait.
Welcome back, Coo1 the Armataur Conjurer.
Press ? for a list of commands and other information.
Saving game... please wait.
Welcome back, Coo1 the Armataur Conjurer.
Welcome back, Coo1 the Armataur Conjurer.
Press ? for a list of commands and other information.
You open the door.
There is an open door here.
Found a plate armour.
Found 9 gold pieces.
A bat comes into view.
Casting: Magic Dart (safe; 4% risk of failure)
Confirm with . or Enter, or press ? or * to list all spells.
Aiming: Magic Dart (safe; 4% risk of failure)
Press: ? - help, Shift-Dir - straight line
Aim: a bat (100% to hit)
The magic dart hits the bat.
The bat is severely wounded.
The bat hits you but does no damage.
Casting: Magic Dart (safe; 4% risk of failure)
Confirm with . or Enter, or press ? or * to list all spells.
Aiming: Magic Dart (safe; 4% risk of failure)
Press: ? - help, Shift-Dir - straight line
Aim: a bat (severely wounded, 100% to hit)
The magic dart hits the bat.
You kill the bat!
You see here a +0 plate armour.
Press: ? - help, v - describe, . - travel
The floor.
You now have 9 gold pieces.
A kobold comes into view. It is wielding a +0 short sword.
The kobold shouts!
Casting: Magic Dart (safe; 4% risk of failure)
Confirm with . or Enter, or press ? or * to list all spells.
Aiming: Magic Dart (safe; 4% risk of failure)
Press: ? - help, Shift-Dir - straight line
Aim: a kobold, wielding a +0 short sword and quivering stones (100% to hit)
The magic dart hits the kobold but does no damage.
The kobold barely misses you.
Casting: Magic Dart (safe; 4% risk of failure)
Confirm with . or Enter, or press ? or * to list all spells.
Aiming: Magic Dart (safe; 4% risk of failure)
Press: ? - help, Shift-Dir - straight line
Aim: a kobold, wielding a +0 short sword and quivering stones (100% to hit)
The magic dart hits the kobold.
You kill the kobold!
Casting: Magic Dart (safe; 4% risk of failure)
Confirm with . or Enter, or press ? or * to list all spells.
Okay, then.
Things that are here:
a +0 short sword; 4 stones
c - a +0 short sword
c - a +0 short sword (weapon)

>>>>>>>>>>>>>>>>>>>>>>

Version history:
Game started: 0.33-a0-554-g008097b4cb

Game state:

mouse_enabled: 0, waiting_for_command: 1, terminal_resized: 0
io_inited: 1, need_save: 1, saving_game: 0, updating_scores: 0:
seen_hups: 0, map_stat_gen: 0, type: 1, arena_suspended: 0

prev_cmd = CMD_WIELD_WEAPON
repeat_cmd = CMD_NO_CMD

Player:
{{{{{{{{{{{
Name:    [Coo1]
Species: Armataur
Job:     Conjurer

HP: 14/14; mods: 0/0
MP: 1/3; mod: 0
Stats: 12 (12) 18 (18) 8 (8)
Position: (24, 44), god: No God (0), turn_is_over: 0, banished: 0
Standing on/in/over feature: floor

Skills (mode: manual)
Name            | can_currently_train | train | training | level | points | progress
Fighting        |          X          |   0   |     0    |    0  |      0 | 0/59
Short Blades    |          X          |   0   |     0    |    0  |      0 | 0/59
Long Blades     |          X          |   0   |     0    |    0  |      0 | 0/59
Axes            |          X          |   0   |     0    |    0  |      0 | 0/70
Maces & Flails  |          X          |   0   |     0    |    0  |      0 | 0/59
Polearms        |          X          |   0   |     0    |    0  |      0 | 0/70
Staves          |          X          |   0   |     0    |    0  |      0 | 0/59
Ranged Weapons  |          X          |   0   |     0    |    0  |      0 | 0/84
Throwing        |          X          |   0   |     0    |    0  |      0 | 0/59
Armour          |          X          |   0   |     0    |    0  |      0 | 0/35
Dodging         |          X          |   1   |    25    |    1  |    158 | 74/168
Stealth         |          X          |   1   |    25    |    2  |    134 | 28/106
Shields         |          X          |   0   |     0    |    0  |      0 | 0/42
Unarmed Combat  |          X          |   0   |     0    |    0  |      0 | 0/59
Spellcasting    |          X          |   1   |    25    |    1  |    186 | 116/142
Conjurations    |          X          |   1   |    25    |    3  |    510 | 154/238
Hexes           |          X          |   0   |     0    |    0  |      0 | 0/59
Summonings      |          X          |   0   |     0    |    0  |      0 | 0/70
Necromancy      |          X          |   0   |     0    |    0  |      0 | 0/70
Translocations  |          X          |   0   |     0    |    0  |      0 | 0/50
Forgecraft      |          X          |   0   |     0    |    0  |      0 | 0/70
Fire Magic      |          X          |   0   |     0    |    0  |      0 | 0/59
Ice Magic       |          X          |   0   |     0    |    0  |      0 | 0/59
Air Magic       |          X          |   0   |     0    |    0  |      0 | 0/59
Earth Magic     |          X          |   0   |     0    |    0  |      0 | 0/59
Alchemy         |          X          |   0   |     0    |    0  |      0 | 0/59
Invocations     |          X          |   0   |     0    |    0  |      0 | 0/50
Evocations      |          X          |   0   |     0    |    0  |      0 | 0/50
Shapeshifting   |          X          |   0   |     0    |    0  |      0 | 0/70

Spell bugs:

Durations:

Attributes:
    #12: 9
    #49: 67

Mutations:
    deformed body: 1 (innate)
    tough skin: 3 (innate)
    armoured tail: 1 (innate)
    rollpage: 1 (innate)

Inventory bugs:
Recursive crash.