I had to test literally a dozen games in wizmode and visit every Gehennom level to get this segfault, but it happens. Here it is:
Program received signal SIGSEGV, Segmentation fault.
0x0820d1ed in worm_known ()
(gdb) backtrace
#0 0x0820d1ed in worm_known ()
#1 0x081428a2 in pronoun_gender ()
#2 0x0820fbae in mon_break_armor ()
#3 0x08140a14 in newcham ()
#4 0x0810a231 in makemon ()
#5 0x0813450c in fill_zoo ()
#6 0x081c36c8 in fill_room ()
#7 0x081c779e in sp_level_coder ()
#8 0x081c7a40 in load_special ()
#9 0x0812d0b6 in makemaz ()
#10 0x08127c2f in makelevel ()
#11 0x08129539 in mklev ()
#12 0x080a5db9 in goto_level ()
#13 0x080a7565 in deferred_goto ()
#14 0x081cedca in level_tele ()
#15 0x0807e36d in wiz_level_tele ()
#16 0x0808a592 in do_command ()
#17 0x080675ec in command_input ()
#18 0x080679c1 in nh_command ()
#19 0x0822f8ad in nhnet_command ()
#20 0x0805e837 in commandloop ()
#21 0x0805ec68 in rungame ()
#22 0x0804ad5a in mainmenu ()
#23 0x0804ae7c in main ()
My interpretation is that a chameleon is turning into a worm, is breaking out of its armor, tries to build an appropriate message and ends up calling worm_known
, which is where the segfault happens.