eclipse-iceoryx / eclipse-iceoryx/iceoryx
icehello example may happen bug when system time rollback
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 492
- Avg merge
- 18h 57m
- Merged PRs (30d)
- 1
Description
## Required information
**Operating system:**
E.g. Ubuntu 20.04.3 LTS
**Compiler version:**
E.g. gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
**Observed result or behaviour:**
```
iox-cpp-publisher-helloworld sent value: 8
iox-cpp-publisher-helloworld sent value: 9
iox-cpp-publisher-helloworld sent value: 10
iox-cpp-publisher-helloworld sent value: 11
iox-cpp-publisher-helloworld sent value: 12
iox-cpp-publisher-helloworld sent value: 13
/home/sxy/ros2_galactic/src/eclipse-iceoryx/iceoryx/iceoryx_utils/source/posix_wrapper/mutex.cpp:92 { bool iox::posix::mutex::lock() } ::: [ 22 ] Success
2022-03-16 15:58:22.422 [ Error ]: ICEORYX error! POPO__CHUNK_LOCKING_ERROR
iox-cpp-publisher-helloworld: /home/sxy/ros2_galactic/src/eclipse-iceoryx/iceoryx/iceoryx_utils/source/error_handling/error_handling.cpp:56: static void iox::ErrorHandler::ReactOnErrorLevel(iox::ErrorLevel, const char*): Assertion `false' failed.
Aborted
```

**Expected result or behaviour:**
When system time rollback happened, all as usual.
```
iox-cpp-publisher-helloworld sent value: 4
iox-cpp-publisher-helloworld sent value: 5
iox-cpp-publisher-helloworld sent value: 6
iox-cpp-publisher-helloworld sent value: 7
iox-cpp-publisher-helloworld sent value: 8
iox-cpp-publisher-helloworld sent value: 9
iox-cpp-publisher-helloworld sent value: 10
iox-cpp-publisher-helloworld sent value: 11
iox-cpp-publisher-helloworld sent value: 12
iox-cpp-publisher-helloworld sent value: 13
iox-cpp-publisher-helloworld sent value: 14
iox-cpp-publisher-helloworld sent value: 15
iox-cpp-publisher-helloworld sent value: 16
iox-cpp-publisher-helloworld sent value: 17
^C2022-03-16 18:28:50.752 [Verbose]: RouDi cleaned up resources of iox-cpp-publisher-helloworld. Shutting down gracefully.
```
**Conditions where it occurred / Performed steps:**
```
1. iox-toudi
2. ./iox-cpp-subscriber-helloworld
3. iox-cpp-publisher-helloworld
4. timedatectl set-ntp false
5. timedatectl set-time 15:58:30 (and maybe need "timedatectl set-time 15:58:20"), to make system time rollback
```
Contributor guide
Research direction
Reproduce the failure with the icehello publisher and subscriber, then disable NTP and roll the system clock back using the reported timedatectl steps. Start by reading iceoryx_utils/source/posix_wrapper/mutex.cpp around line 92 and iceoryx_utils/source/error_handling/error_handling.cpp around line 56. Done means the example continues publishing without the POPO__CHUNK_LOCKING_ERROR or assertion after the rollback.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- distributed-systems, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100