Re: Memmove causing program crashes, giving SIGTRAP in GDB(?)

KENNON J CONRAD via Cygwin <[email protected]>
Newsgroups gmane.os.cygwin
Message-ID <[email protected]>
Corrections:

Elements 973 - 976 would be moved on the next iteration of the REP MOVSQ.
REP MOVSQ made it through 17 iterations

> On 03/12/2026 10:15 PM PDT KENNON J CONRAD via Cygwin <[email protected]> wrote:
> 
>  
> Thanks, Jon.  Setting cygwin-exceptions on does change the picture considerably,
> but the picture of exactly what is happening is still cloudy for me.
> 
> The program breaks at the same spot in memmove, which is now in frame 0:
> REP MOVSQ %ds(%rsi),%es(%rdi)
> 
> but now GDB says "received signal SIGSEGV, Segmentation fault."
> 
> The EFLAGS register value is 0x10687 [ CF PF SF IF DF RF ].
> So DF is set (as it should be), which is different than without exceptions on.
> 
> ds contains 0x2b (not relevant?)
> es contains 0x2b (not relevant?)
> rsi contains 0xa00034c1a
> rdi contains 0xa00034c1c
> The uint16_t array starts at address 0xa00034480
> Array elements 781 - 1045 are being moved to 782 - 1046 (backward move).
> Elements 973 - 980 would be moved on the next iteration of the REP MOVSQ.
> 
> I see no obvious reason for the segmentation fault.  The array address looks correct,
> the array indexes are valid, and the REP MOVSQ made it through 8 iterations before
> the SIGSEGV happened, and the program does not crash using alternative code in place
> of the memmove call.
> 
> Is it possible some interrupt routine doesn't handle DF being set when it starts and
> gets a segmentation fault that GDB would detect at this point in the code?
> 
> 
> > I'd add to that a reference to [1]
> > 
> > [1] https://cygwin.com/faq.html#faq.programming.debugging-cygwin
> > 
> > Unfortunately, when investigating exceptions inside the cygwin dll, it's 
> > necessary to 'set cygwin-exceptions on', which will cause the debugger 
> > to actually stop at the point of the exception.
> > 
> > (This explains why the specific exception is SIGTRAP, and why you get 
> > the all the extra frames for exception handling below memmove in the 
> > backtrace)
> >
> 
> -- 
> Problem reports:      https://cygwin.com/problems.html
> FAQ:                  https://cygwin.com/faq/
> Documentation:        https://cygwin.com/docs.html
> Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.