With the beta AVR toolchain 3.0.0.207, the prologue for functions using a frame has changed and is now causing stack corruption when an interrupt fires. Take for example a function which needs 5 bytes of frame. This is how the frame is setup in the function prologue: Under WinAVR2010: a30: df 93 push r29 a32: cf 93 push r28 a34: 00 d0 rcall .+0 ; 0xa36 a36: 00 d0 rcall .+0 ; 0xa38 a38: 0f 92 push r0 a3a: cd b7 in r28, 0x3d ; 61 a3c: de b7 in r29, 0x3e ; 62 AVR Toolchain 3.0.0.207: +00000507: 93DF PUSH R29 Push register on stack +00000508: 93CF PUSH R28 Push register on stack +00000509: B7CD IN R28,0x3D In from I/O location +0000050A: B7DE IN R29,0x3E In from I/O location +0000050B: 9725 SBIW R28,0x05 Subtract immediate from word +0000050C: BFDE OUT 0x3E,R29 Out to I/O location +0000050D: BFCD OUT 0x3D,R28 The stack corruption occurs when an interrupt fires between addresses 0x50C and 0x50D in the example above since the stack pointer is only half updated. I have submitted this as critical since it causes applications to crash consistently.
Why isn't this a bug in the interrupt handler? What is "beta AVR toolchain 3.0.0.207" btw? We do not release such, so maybe you should file a bug with the vendor releasing that?
It's not a bug in the handler since when the interrupt fires at the point when the stack pointer is invalid (right after 0x50c), the program counter gets pushed onto the stack, which is an invalid location. When I tried to submit a report with the vendor, they pointed me back here. Maybe this should go to AVRLiBC?
Created attachment 21472 [details] File which recreates the issue
Created attachment 21473 [details] makefile
Marking this bug as INVALID because the AVR Toolchain 3.0.0.207 is not an officially released toolchain, and only in beta. If you have any potential bugs, then please send to avr AT atmel DOT com, and please CC me. AFAIK, Atmel did not (or should have not) sent you to here. When you do send a bug report, send a compilable test case that shows the bugs along with the command line you used, and especially show which device this is for.
OK thanks, is the code I attached here OK? I already submitted this to Atmel also (#605725). Last time I submitted a bug to them this is the reply I got back: Note that avr-gcc and avr-libC are open-source projects, which you may directly report bugs to (see http://www.nongnu.org/avr-libc/bugs.html). (In reply to comment #5) > Marking this bug as INVALID because the AVR Toolchain 3.0.0.207 is not an > officially released toolchain, and only in beta. > > If you have any potential bugs, then please send to avr AT atmel DOT com, and > please CC me. AFAIK, Atmel did not (or should have not) sent you to here. > > When you do send a bug report, send a compilable test case that shows the bugs > along with the command line you used, and especially show which device this is > for. >