The specific case that failed was
request = receiver.fetch();
address = request.ReplyTo;
sender = session.CreateSender(address);
The bug occurs during the cloning of the Address object from the request.ReplyTo. After that line of code there are two managed objects that have pointers to the same unmanaged object. When the CreateSender function asserts then the process will get an accvio during shutdown.