arduino / arduino/ArduinoCore-mbed

Moving one EthernetClient object to another crashes the Portenta H7

Open
#715 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
411
Forks
225
PR merge metrics
No merged PRs in 30d

Description

As the title says. Reproducer sketch:
```c++
#include

// --------------------------------------------------------------------------------
// remove_reference

template
struct remove_reference {
typedef T type;
};

template
struct remove_reference {
typedef T type;
};

template
struct remove_reference {
typedef T type;
};

#define MOVE(...) \
static_cast::type &&>( \
__VA_ARGS__)

void setup() {
EthernetClient ec = {};
EthernetClient ec2{ MOVE(ec) }; // Crashes the board
}

void loop() {}
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the provided reproducer sketch and the EthernetClient move construction in setup(). Run it on a Portenta H7 to confirm the crash, then trace the EthernetClient implementation used by Ethernet.h. Done means moving one EthernetClient into another no longer crashes the board.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
embedded-iot
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.