Could you please do the following?
In msh_spawn_monster_list, add a line:
show_debug_message("Spawn list:" + string(id))
In mev_pause_monsters_release_confirm, add some code after "amp_clear_monster":
show_debug_message("Update:" + string(daddy.daddy)) with(obj_gguimenu){ show_debug_message(tsprintf("ID: %, %x%",id,menu_w,menu_h)) }
Then when releasing a monster, check the "Output" window and it'll print some messages with the ID data.
The IDs used for the "Spawn list" and "Update" printouts should be the same (I suspect you forget to set "daddy" accordingly in one of the menus when creating the child menu), and we print ALL the IDs (with menu size alongside it) just in case the results are still weird.