in reply to Re: Re: ActivateState crasher
in thread ActivePerl crasher

This program has performed an illegal operation in Windows means that it tried to execute something that wasn't a command.

I think you can also get that error by attempting to write to memory that isn't allocated to you (e.g., in case of a buffer overrunwild pointer). I can't prove it, though, and it's possible I'm mistaken.

Update: wild pointer is a much better example than buffer overrun of why this would happen.

;$;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$;[-1]->();print

Replies are listed 'Best First'.
Re: Re: ActivateState crasher
by tilly (Archbishop) on May 19, 2004 at 01:38 UTC
    I just checked. You're right, my description was incomplete.

    You can get that error from a large variety of interrupts and exceptions. The case that I described is when a normally working program has an illegal instruction because what was supposed to be code was overwritten (eg by a buffer overrun). But you can get the same error if you, for instance, attempt to access a memory address that isn't mapped.

    In the event of a buffer overrun that overruns just slightly, it is far more likely that you would overwrite code than that you would access memory outside of what is mapped. But missing the buffer due to a programming bug could easily be accessing wild memory addresses, giving the same error through a wildly different cause.