Interrupts conflict

Hello,

I work with the microprocessor Atmel SAM3X8E and the software Atmel 7.

I want to make an ethernet communication (TCP/IP) from my PC to my programming board. For the programming board, the receive of datas shalls turn thanks to a task of freeRTOS. My computer shall send the data.

Without task, the receive of data works well but when I put the receive part in a task of FreeRTOS, after 1 receive my programme block in an handler of unused IRQs…

**
 * \brief Default interrupt handler for unused IRQs.
 */
void Dummy_Handler(void)
{
	while (1) {
	}
}

This handler is use for all my handlers :

void EMAC_Handler       ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
void USART0_Handler     ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
void USART1_Handler     ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
void USART2_Handler     ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
void PIOA_Handler       ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
void PIOB_Handler       ( void ) __attribute__ ((weak, alias("Dummy_Handler")));
...

After 1 send, the IRQs of my EMAC (ethernet) pass well (I check with some print). I don’t know how but my program go always into this infinite handler while all my IRQs are initialize…

I think it’s a problem of conflict from IRQs of FreeRTOS and IRQs of emac but i am not sure.

Do you have any idea to how to fixe this issues ?

After some researches this is the handler that is call after the 1 data receive and block me :

/* Cortex-M3 core handlers */
void HardFault_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));

And this is my Ethernet receive task :

void task_ethernet(void *param)
{
	uint32_t ul_frm_size = 0;
	
	while(1)
	{
        //Check if the ethernet cable is plug (=1) or not
		if (TFT_get_eth_active() != 0)
		{
			if (emac_dev_read(&gs_emac_dev, (uint8_t *) gs_uc_eth_buffer, sizeof(gs_uc_eth_buffer), &ul_frm_size) == EMAC_OK) {
                    //This function find the ethernet protocol of the trame and do some print in function of the protocol use
					emac_process_eth_packet((uint8_t *) gs_uc_eth_buffer, ul_frm_size);
			}		
			vTaskDelay(pdMS_TO_TICKS(5));
		}
		else{
			vTaskDelay(pdMS_TO_TICKS(500));
		}
	}//Fin du while
	vTaskDelete( NULL );
}

I just find my solution it was an overstacking problem ^^ !