I'm a bit confused, maybe you should post your stop/start functions here too? I've never encountered an issue with this and, at least looking in what I thought was still stock functions on my end, I don't see what difference it would make.

I picked that up in my log, because I have this defined in mud.h which I copied from Remcon's LOP as seemed like a great idea to pick up memory issues.

I'm guessing you didn't have any issues prior to porting it over? I'm not sure what differences are with LOP, but I'd not be surprised if it isn't entirely compatible with stock. There might be something else you need to port over. Maybe Remcon can shed more light on this, but that's my $.02.

I am getting a crash core now and then from fight.c due to STRFREE being used on on a strdup.

I am thinking I might have an issue with this Because I have mobile hate level so mobs change who they hate based on damage amounts.

Can you show us how you did that piece? Maybe that is the part of the puzzle missing here. The change from Remcon's LOP and the code you show here should make no difference that I can see. Maybe the code is breaking here because of somewhere else having to do with how you're managing the hate level and the changing of who they hate?

If QUICKLINK is using quick_link( ) which is using str_alloc, why are you getting an error staying it was str_dup( )'ed and now attempting to STRFREE it? There's a disconnect here, hence the question about how QUICKLINK is defined in mud.h, because if it isn't using quick_link then maybe that's related to your issue.

Should be copied and pasted from LOP when I ported it. It's almost exactly same as smaugfuss cept has more debugging info like file, line in bug messages whereas smaugfuss has some of it, but not quite as much.

How can you make the assertion that the two above pieces of code are the same? Clearly they are not. I really want to help here and understand what's wrong, but I can't debug one piece of code when GDB was clearly looking at something else.

I'm not lying, I have no reason too. I'm not the best coder, and will not pretend to be. I posted cause I thought it was a legit bug or at least an issue with my code.

Nobody is saying you're lying. What I'm asking is why GDB's log is showing a different version of that block of code from what you posted initially. Notice the if ( ch ) check and redundant if( victim->hating ) checks. Where did those go?

Your problem could well be that ch didn't exist when that conditional was run, so while it STRFREE'ed victim->hating->name, it didn't put anything in its place. Your GDB log seems to indicate "corpse" as a name so that's another reason I'm suspecting something is off. Think about it, next go around, maybe trying to STRFREE something already freed (and not QUICKLINK'ed again afterwards) is the source of your initial error.

Don't take it the wrong way, but as I said, difficult to debug when code that created the error is not the code that was posted initially.