Ok, this bug is, well, incredibly strange.
What happens is this:
Belgarath enters MEDIT.
He doesn't make a change.
He types Q, to quit.
He is returned to the prompt.
Anything he types causes a crash right here:
void write_to_q(const char *txt, struct txt_q *queue, int aliased)
{
struct txt_block *newt;
CREATE(newt, struct txt_block, 1); <-----
CREATE(newt->text, char, strlen(txt) + 1);
strcpy(newt->text, txt);
newt->aliased = aliased;
/* queue empty? */
if (!queue->head) {
newt->next = NULL;
queue->head = queue->tail = newt;
} else {
queue->tail->next = newt;
queue->tail = newt;
newt->next = NULL;
}
}
The debugger output passed me down to that line, but I couldn't get any
data out of it. It's a malloc failure, and the failure is actually in my
malloc lib.
This bug was born when I went and diff'd my circle30bpl12 MUD against
circle30bpl12, and began moving all my changes over to bpl14. There was
about a meg of changes, so I expected bugs, but not like this.
It occurs in REDIT, MEDIT, OEDIT, and SEDIT (not Z, H, A, TRIG, or T),
when I do not save a change or do not make a change. This leads me to
believe that I'm not freeing something I should, or I'm freeing something
I shouldn't with medit_free_mobile, free_object, free_room, etc.
If you get any ideas, let me know. I continue to dig, in the meantime...
-B.
[-------------------------------------------]
Tony Robbins, <tonyr@nwpaclink.com>
LakeView Technologies, Inc.
[-------------------------------------------]
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST