Re: [PATCH v3 4/4] testsuite/smokey/psostests: Fix compile error seen with gcc 16

Jan Kiszka <[email protected]> Mon, 20 Jul 2026 17:04:04 +0200
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
On 20.07.26 17:02, Florian Bezdeka wrote:
> On Mon, 2026-07-20 at 16:40 +0200, Jan Kiszka wrote:
>> On 17.07.26 09:45, Florian Bezdeka wrote:
>>> Fixes the following compile errors:
>>>
>>> rn-1.c: In function ‘alloc_task’:
>>> rn-1.c:16:18: error: variable ‘n’ set but not used [-Werror=unused-but-set-variable=]
>>>    16 |         int ret, n;
>>>       |                  ^
>>> rn-1.c:15:22: error: variable ‘alloc_size’ set but not used [-Werror=unused-but-set-variable=]
>>>    15 |         u_long size, alloc_size = 0;
>>>       |
>>>
>>> task-2.c: In function ‘backgroundTask’:
>>> task-2.c:19:42: error: variable ‘count’ set but not used [-Werror=unused-but-set-variable=]
>>>    19 |         unsigned int safety = 100000000, count = 0;
>>>       |                                          ^~~~~
>>> cc1: all warnings being treated as errors
>>>
>>> The counting busy loop has been replaced by an interval based busy
>>> loop. While at it: Enable this test for CI. It was previously marked
>>> as broken. The counting busy loop was not enough to keep the task alive.
>>>
>>> Signed-off-by: Florian Bezdeka <[email protected]>
>>> ---
>>>  testsuite/smokey/psostests/psostests.c | 4 +---
>>>  testsuite/smokey/psostests/rn-1.c      | 7 +++----
>>>  testsuite/smokey/psostests/task-2.c    | 5 ++---
>>>  3 files changed, 6 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/testsuite/smokey/psostests/psostests.c b/testsuite/smokey/psostests/psostests.c
>>> index 289d563ac3595f0e2d21bc5f5746772fd51234b8..31347ba45ea430ac4b2e62be4c1e437519f2fb37 100644
>>> --- a/testsuite/smokey/psostests/psostests.c
>>> +++ b/testsuite/smokey/psostests/psostests.c
>>> @@ -15,9 +15,7 @@ static const char * const tests[] = {
>>>  	"psostests_sem1",
>>>  	"psostests_sem2",
>>>  	"psostests_task1",
>>> -	// 0"014.452| BUG in __traceobj_assert_failed(): [FGND] trace assertion failed:
>>> -	//		../../../../../../../../../workspace/sources/xenomai/testsuite/smokey/psostests/task-2.c:56 => "ret == 0"
>>> -	//"psostests_task2",
>>> +	"psostests_task2",
>>>  	"psostests_task3",
>>>  	"psostests_task4",
>>>  	"psostests_task5",
>>> diff --git a/testsuite/smokey/psostests/rn-1.c b/testsuite/smokey/psostests/rn-1.c
>>> index 5e82d1506ca029ae2bf812ccbfbf9c3a9ab9cc7e..d2e847375212c9746de3e550a5d10a8be4694de5 100644
>>> --- a/testsuite/smokey/psostests/rn-1.c
>>> +++ b/testsuite/smokey/psostests/rn-1.c
>>> @@ -12,15 +12,15 @@ static u_long tid, rnid;
>>>  
>>>  static void alloc_task(u_long a1, u_long a2, u_long a3, u_long a4)
>>>  {
>>> -	u_long size, alloc_size = 0;
>>> -	int ret, n;
>>> +	u_long size;
>>>  	void *buf;
>>> +	int ret;
>>>  
>>>  	traceobj_enter(&trobj);
>>>  
>>>  	srandom(0x11223344);
>>>  
>>> -	for (n = 0;; n++) {
>>> +	for (;;) {
>>>  		size = (random() % (sizeof(rn_mem) / 8)) + 4;
>>>  		ret = rn_getseg(rnid, size, RN_NOWAIT, 0, &buf);
>>>  		if (ret) {
>>> @@ -28,7 +28,6 @@ static void alloc_task(u_long a1, u_long a2, u_long a3, u_long a4)
>>>  			break;
>>>  		}
>>>  		memset(buf, 0xaa, size);
>>> -		alloc_size += size;
>>>  	}
>>>  
>>>  	traceobj_exit(&trobj);
>>> diff --git a/testsuite/smokey/psostests/task-2.c b/testsuite/smokey/psostests/task-2.c
>>> index d24c13465367c7c2a6975dd4cbb01eb75f8fd1ad..21497433f1a3584184406b172c367eacd5a8b127 100644
>>> --- a/testsuite/smokey/psostests/task-2.c
>>> +++ b/testsuite/smokey/psostests/task-2.c
>>> @@ -2,6 +2,7 @@
>>>  #include <stdio.h>
>>>  #include <stdlib.h>
>>>  #include <copperplate/traceobj.h>
>>> +#include <copperplate/threadobj.h>
>>>  #include <psos/psos.h>
>>>  
>>>  static struct traceobj trobj;
>>> @@ -16,7 +17,6 @@ static u_long sem_id;
>>>  
>>>  static void backgroundTask(u_long a1, u_long a2, u_long a3, u_long a4)
>>>  {
>>> -	unsigned int safety = 100000000, count = 0;
>>>  	int ret;
>>>  
>>>  	traceobj_enter(&trobj);
>>> @@ -28,8 +28,7 @@ static void backgroundTask(u_long a1, u_long a2, u_long a3, u_long a4)
>>>  
>>>  	traceobj_mark(&trobj, 2);
>>>  
>>> -	while (--safety > 0)
>>> -		count++;
>>> +	threadobj_spin(2000000);
>>>  
>>
>> Here you do the right thing.
>>
>>>  	traceobj_mark(&trobj, 3);
>>>  
>>>
>>
>> But the patch description is confusing: It only talks about fixing
>> compiler errors, but the code is actually re-enabling psostests_task2,
>> isn't it?
> 
> Taken from the description above:
> 
> While at it: Enable this test for CI. It was previously marked
> as broken. The counting busy loop was not enough to keep the task alive.
> 
> I can re-order the description a bit to make that even clearer.
> 

Start with the subject...

Jan

-- 
Siemens AG, Foundational Technologies
Linux Expert Center