* [Xenomai-core] Warning when compiling trunk.
@ 2008-10-20 19:30 Gilles Chanteperdrix
2008-10-20 20:03 ` Jan Kiszka
0 siblings, 1 reply; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 19:30 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
I get this warning when compiling trunk:
checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
yes
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 19:30 [Xenomai-core] Warning when compiling trunk Gilles Chanteperdrix
@ 2008-10-20 20:03 ` Jan Kiszka
2008-10-20 20:34 ` Gilles Chanteperdrix
0 siblings, 1 reply; 20+ messages in thread
From: Jan Kiszka @ 2008-10-20 20:03 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 366 bytes --]
Gilles Chanteperdrix wrote:
> I get this warning when compiling trunk:
>
> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
> yes
>
That simple, it's a typo in this line:
http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
Also, that rm should be done outside the if block to play safe.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 20:03 ` Jan Kiszka
@ 2008-10-20 20:34 ` Gilles Chanteperdrix
2008-10-20 20:37 ` Gilles Chanteperdrix
0 siblings, 1 reply; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 20:34 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> I get this warning when compiling trunk:
>>
>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>> yes
>>
>
> That simple, it's a typo in this line:
>
> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>
> Also, that rm should be done outside the if block to play safe.
Ok. But once this is fixed, I get a segmentation fault with __thread on
ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
and if __thread is disabled, there is no segfault.
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 20:34 ` Gilles Chanteperdrix
@ 2008-10-20 20:37 ` Gilles Chanteperdrix
2008-10-20 20:42 ` Jan Kiszka
0 siblings, 1 reply; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 20:37 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> I get this warning when compiling trunk:
>>>
>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>> yes
>>>
>> That simple, it's a typo in this line:
>>
>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>
>> Also, that rm should be done outside the if block to play safe.
>
> Ok. But once this is fixed, I get a segmentation fault with __thread on
> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
> and if __thread is disabled, there is no segfault.
If a #ifdef 0 xeno_set_current, there is no segfault.
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 20:37 ` Gilles Chanteperdrix
@ 2008-10-20 20:42 ` Jan Kiszka
2008-10-20 20:59 ` Gilles Chanteperdrix
0 siblings, 1 reply; 20+ messages in thread
From: Jan Kiszka @ 2008-10-20 20:42 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 870 bytes --]
Gilles Chanteperdrix wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> I get this warning when compiling trunk:
>>>>
>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>> yes
>>>>
>>> That simple, it's a typo in this line:
>>>
>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>
>>> Also, that rm should be done outside the if block to play safe.
>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>> and if __thread is disabled, there is no segfault.
>
> If a #ifdef 0 xeno_set_current, there is no segfault.
>
Interesting. What about removing the initial-exec attributes? Is
__thread otherwise know to work on your platform?
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 20:42 ` Jan Kiszka
@ 2008-10-20 20:59 ` Gilles Chanteperdrix
2008-10-20 21:06 ` Gilles Chanteperdrix
2008-10-20 21:12 ` Jan Kiszka
0 siblings, 2 replies; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 20:59 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Gilles Chanteperdrix wrote:
>>> Jan Kiszka wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> I get this warning when compiling trunk:
>>>>>
>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>> yes
>>>>>
>>>> That simple, it's a typo in this line:
>>>>
>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>
>>>> Also, that rm should be done outside the if block to play safe.
>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>> and if __thread is disabled, there is no segfault.
>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>
>
> Interesting. What about removing the initial-exec attributes? Is
> __thread otherwise know to work on your platform?
Yes. This is a race condition, the real bug is, IMHO:
__native_self = *iargs->task;
When the segfault happens iargs->task is NULL. I suspect you are not
supposed to use iargs after the __native_task_create syscall.
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 20:59 ` Gilles Chanteperdrix
@ 2008-10-20 21:06 ` Gilles Chanteperdrix
2008-10-20 21:15 ` Jan Kiszka
2008-10-20 21:12 ` Jan Kiszka
1 sibling, 1 reply; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 21:06 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Jan Kiszka wrote:
>>>>> Gilles Chanteperdrix wrote:
>>>>>> I get this warning when compiling trunk:
>>>>>>
>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>> yes
>>>>>>
>>>>> That simple, it's a typo in this line:
>>>>>
>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>
>>>>> Also, that rm should be done outside the if block to play safe.
>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>> and if __thread is disabled, there is no segfault.
>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>
>> Interesting. What about removing the initial-exec attributes? Is
>> __thread otherwise know to work on your platform?
>
> Yes. This is a race condition, the real bug is, IMHO:
> __native_self = *iargs->task;
> When the segfault happens iargs->task is NULL. I suspect you are not
> supposed to use iargs after the __native_task_create syscall.
Yes, that was the problem.
However, another problem, should not the __thread variables be given the
weak attribute too? If a native thread tries to use a pthread mutex, I
want pthread_mutex_lock to obtain the current xnhandle_t set by the
native skin, not an inexistant one that should have been set by the
posix skin but obviously has not.
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 20:59 ` Gilles Chanteperdrix
2008-10-20 21:06 ` Gilles Chanteperdrix
@ 2008-10-20 21:12 ` Jan Kiszka
1 sibling, 0 replies; 20+ messages in thread
From: Jan Kiszka @ 2008-10-20 21:12 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 1383 bytes --]
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Jan Kiszka wrote:
>>>>> Gilles Chanteperdrix wrote:
>>>>>> I get this warning when compiling trunk:
>>>>>>
>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>> yes
>>>>>>
>>>>> That simple, it's a typo in this line:
>>>>>
>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>
>>>>> Also, that rm should be done outside the if block to play safe.
>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>> and if __thread is disabled, there is no segfault.
>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>
>> Interesting. What about removing the initial-exec attributes? Is
>> __thread otherwise know to work on your platform?
>
> Yes. This is a race condition, the real bug is, IMHO:
> __native_self = *iargs->task;
> When the segfault happens iargs->task is NULL. I suspect you are not
> supposed to use iargs after the __native_task_create syscall.
Don't see the race yet. iargs is provided by the trampoline creator, and
with that one we synchronize with the barrier AFTER this access - or
does the compiler some fancy reordering here?
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 21:06 ` Gilles Chanteperdrix
@ 2008-10-20 21:15 ` Jan Kiszka
2008-10-20 21:25 ` Gilles Chanteperdrix
0 siblings, 1 reply; 20+ messages in thread
From: Jan Kiszka @ 2008-10-20 21:15 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 1734 bytes --]
Gilles Chanteperdrix wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> Jan Kiszka wrote:
>>>>>> Gilles Chanteperdrix wrote:
>>>>>>> I get this warning when compiling trunk:
>>>>>>>
>>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>>> yes
>>>>>>>
>>>>>> That simple, it's a typo in this line:
>>>>>>
>>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>>
>>>>>> Also, that rm should be done outside the if block to play safe.
>>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>>> and if __thread is disabled, there is no segfault.
>>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>>
>>> Interesting. What about removing the initial-exec attributes? Is
>>> __thread otherwise know to work on your platform?
>> Yes. This is a race condition, the real bug is, IMHO:
>> __native_self = *iargs->task;
>> When the segfault happens iargs->task is NULL. I suspect you are not
>> supposed to use iargs after the __native_task_create syscall.
>
> Yes, that was the problem.
What did you change? Can you explain the why to me?
>
> However, another problem, should not the __thread variables be given the
> weak attribute too? If a native thread tries to use a pthread mutex, I
> want pthread_mutex_lock to obtain the current xnhandle_t set by the
> native skin, not an inexistant one that should have been set by the
> posix skin but obviously has not.
>
Yes, true. Please commit a fix as you are already patching.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 21:15 ` Jan Kiszka
@ 2008-10-20 21:25 ` Gilles Chanteperdrix
2008-10-20 21:30 ` Jan Kiszka
0 siblings, 1 reply; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 21:25 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Gilles Chanteperdrix wrote:
>>> Jan Kiszka wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> Gilles Chanteperdrix wrote:
>>>>>> Jan Kiszka wrote:
>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>> I get this warning when compiling trunk:
>>>>>>>>
>>>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>>>> yes
>>>>>>>>
>>>>>>> That simple, it's a typo in this line:
>>>>>>>
>>>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>>>
>>>>>>> Also, that rm should be done outside the if block to play safe.
>>>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>>>> and if __thread is disabled, there is no segfault.
>>>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>>>
>>>> Interesting. What about removing the initial-exec attributes? Is
>>>> __thread otherwise know to work on your platform?
>>> Yes. This is a race condition, the real bug is, IMHO:
>>> __native_self = *iargs->task;
>>> When the segfault happens iargs->task is NULL. I suspect you are not
>>> supposed to use iargs after the __native_task_create syscall.
>> Yes, that was the problem.
>
> What did you change? Can you explain the why to me?
Because I guess iargs is no longer valid at this point. So, I saved the
task pointer and reused it.
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 21:25 ` Gilles Chanteperdrix
@ 2008-10-20 21:30 ` Jan Kiszka
2008-10-20 21:32 ` Gilles Chanteperdrix
2008-10-21 7:36 ` Philippe Gerum
0 siblings, 2 replies; 20+ messages in thread
From: Jan Kiszka @ 2008-10-20 21:30 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 1712 bytes --]
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Jan Kiszka wrote:
>>>>> Gilles Chanteperdrix wrote:
>>>>>> Gilles Chanteperdrix wrote:
>>>>>>> Jan Kiszka wrote:
>>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>>> I get this warning when compiling trunk:
>>>>>>>>>
>>>>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>>>>> yes
>>>>>>>>>
>>>>>>>> That simple, it's a typo in this line:
>>>>>>>>
>>>>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>>>>
>>>>>>>> Also, that rm should be done outside the if block to play safe.
>>>>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>>>>> and if __thread is disabled, there is no segfault.
>>>>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>>>>
>>>>> Interesting. What about removing the initial-exec attributes? Is
>>>>> __thread otherwise know to work on your platform?
>>>> Yes. This is a race condition, the real bug is, IMHO:
>>>> __native_self = *iargs->task;
>>>> When the segfault happens iargs->task is NULL. I suspect you are not
>>>> supposed to use iargs after the __native_task_create syscall.
>>> Yes, that was the problem.
>> What did you change? Can you explain the why to me?
>
> Because I guess iargs is no longer valid at this point. So, I saved the
> task pointer and reused it.
>
Sorry, makes no sense to me: *iargs is on the stack of the
rt_task_create caller, and that one is not expected to proceed until we
issue __xn_sys_barrier.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 21:30 ` Jan Kiszka
@ 2008-10-20 21:32 ` Gilles Chanteperdrix
2008-10-20 21:34 ` Jan Kiszka
2008-10-21 7:36 ` Philippe Gerum
1 sibling, 1 reply; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 21:32 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> Jan Kiszka wrote:
>>>>>> Gilles Chanteperdrix wrote:
>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>> Jan Kiszka wrote:
>>>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>>>> I get this warning when compiling trunk:
>>>>>>>>>>
>>>>>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>>>>>> yes
>>>>>>>>>>
>>>>>>>>> That simple, it's a typo in this line:
>>>>>>>>>
>>>>>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>>>>>
>>>>>>>>> Also, that rm should be done outside the if block to play safe.
>>>>>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>>>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>>>>>> and if __thread is disabled, there is no segfault.
>>>>>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>>>>>
>>>>>> Interesting. What about removing the initial-exec attributes? Is
>>>>>> __thread otherwise know to work on your platform?
>>>>> Yes. This is a race condition, the real bug is, IMHO:
>>>>> __native_self = *iargs->task;
>>>>> When the segfault happens iargs->task is NULL. I suspect you are not
>>>>> supposed to use iargs after the __native_task_create syscall.
>>>> Yes, that was the problem.
>>> What did you change? Can you explain the why to me?
>> Because I guess iargs is no longer valid at this point. So, I saved the
>> task pointer and reused it.
>>
>
> Sorry, makes no sense to me: *iargs is on the stack of the
> rt_task_create caller, and that one is not expected to proceed until we
> issue __xn_sys_barrier.
Well I am busy with the ARM FCSE now. Do you want my test case ?
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 21:32 ` Gilles Chanteperdrix
@ 2008-10-20 21:34 ` Jan Kiszka
2008-10-20 21:35 ` Gilles Chanteperdrix
0 siblings, 1 reply; 20+ messages in thread
From: Jan Kiszka @ 2008-10-20 21:34 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 1985 bytes --]
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Jan Kiszka wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> Gilles Chanteperdrix wrote:
>>>>>> Jan Kiszka wrote:
>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>>> Jan Kiszka wrote:
>>>>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>>>>> I get this warning when compiling trunk:
>>>>>>>>>>>
>>>>>>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>>>>>>> yes
>>>>>>>>>>>
>>>>>>>>>> That simple, it's a typo in this line:
>>>>>>>>>>
>>>>>>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>>>>>>
>>>>>>>>>> Also, that rm should be done outside the if block to play safe.
>>>>>>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>>>>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>>>>>>> and if __thread is disabled, there is no segfault.
>>>>>>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>>>>>>
>>>>>>> Interesting. What about removing the initial-exec attributes? Is
>>>>>>> __thread otherwise know to work on your platform?
>>>>>> Yes. This is a race condition, the real bug is, IMHO:
>>>>>> __native_self = *iargs->task;
>>>>>> When the segfault happens iargs->task is NULL. I suspect you are not
>>>>>> supposed to use iargs after the __native_task_create syscall.
>>>>> Yes, that was the problem.
>>>> What did you change? Can you explain the why to me?
>>> Because I guess iargs is no longer valid at this point. So, I saved the
>>> task pointer and reused it.
>>>
>> Sorry, makes no sense to me: *iargs is on the stack of the
>> rt_task_create caller, and that one is not expected to proceed until we
>> issue __xn_sys_barrier.
>
> Well I am busy with the ARM FCSE now. Do you want my test case ?
Yes, hoping that it triggers on x86 as well. And is toolchain independent.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 21:34 ` Jan Kiszka
@ 2008-10-20 21:35 ` Gilles Chanteperdrix
2008-10-20 22:41 ` Jan Kiszka
0 siblings, 1 reply; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 21:35 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 220 bytes --]
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Well I am busy with the ARM FCSE now. Do you want my test case ?
>
> Yes, hoping that it triggers on x86 as well. And is toolchain independent.
--
Gilles.
[-- Attachment #2: test_sigshadow.c --]
[-- Type: text/x-csrc, Size: 495 bytes --]
#include <stdio.h>
#include <sys/mman.h>
#include <pthread.h>
#include <native/task.h>
void relaxed_thread(void *cookie)
{
rt_task_set_mode(T_PRIMARY, 0, NULL);
for (;;)
;
}
int main(void)
{
struct sched_param p;
RT_TASK tid;
mlockall(MCL_CURRENT | MCL_FUTURE);
p.sched_priority = 99;
pthread_setschedparam(pthread_self(), SCHED_FIFO, &p);
rt_task_spawn(&tid, "relax", 65536, 12, 0, relaxed_thread, NULL);
sleep(1);
rt_task_suspend(&tid);
sleep(1);
exit(EXIT_SUCCESS);
}
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 21:35 ` Gilles Chanteperdrix
@ 2008-10-20 22:41 ` Jan Kiszka
2008-10-20 22:48 ` Gilles Chanteperdrix
2008-10-20 23:18 ` Gilles Chanteperdrix
0 siblings, 2 replies; 20+ messages in thread
From: Jan Kiszka @ 2008-10-20 22:41 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 293 bytes --]
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Well I am busy with the ARM FCSE now. Do you want my test case ?
>> Yes, hoping that it triggers on x86 as well. And is toolchain independent.
>
It doesn't trigger. Can you reproduce on x86?
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 22:41 ` Jan Kiszka
@ 2008-10-20 22:48 ` Gilles Chanteperdrix
2008-10-20 23:18 ` Gilles Chanteperdrix
1 sibling, 0 replies; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 22:48 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Well I am busy with the ARM FCSE now. Do you want my test case ?
>>> Yes, hoping that it triggers on x86 as well. And is toolchain independent.
>
> It doesn't trigger. Can you reproduce on x86?
I think it will trigger more easily on UP. Did you try on UP ?
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 22:41 ` Jan Kiszka
2008-10-20 22:48 ` Gilles Chanteperdrix
@ 2008-10-20 23:18 ` Gilles Chanteperdrix
2008-10-21 6:31 ` Jan Kiszka
1 sibling, 1 reply; 20+ messages in thread
From: Gilles Chanteperdrix @ 2008-10-20 23:18 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Well I am busy with the ARM FCSE now. Do you want my test case ?
>>> Yes, hoping that it triggers on x86 as well. And is toolchain independent.
>
> It doesn't trigger. Can you reproduce on x86?
Beware, I just noticed that I commited my fix. I thought I had commited
only files where I made changes for SIGWINCH, but it happens that I had
also made changes for SIGWINCH in src/skins/native/task.c
--
Gilles.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 23:18 ` Gilles Chanteperdrix
@ 2008-10-21 6:31 ` Jan Kiszka
0 siblings, 0 replies; 20+ messages in thread
From: Jan Kiszka @ 2008-10-21 6:31 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 772 bytes --]
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Jan Kiszka wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> Well I am busy with the ARM FCSE now. Do you want my test case ?
>>>> Yes, hoping that it triggers on x86 as well. And is toolchain independent.
>> It doesn't trigger. Can you reproduce on x86?
>
> Beware, I just noticed that I commited my fix. I thought I had commited
> only files where I made changes for SIGWINCH, but it happens that I had
> also made changes for SIGWINCH in src/skins/native/task.c
I ran my local version of yesterday afternoon, and I used UP - no
segfaults. This issue remains fishy. Even if there is a race, we need to
understand it first. And I'm still failing to see what races.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-20 21:30 ` Jan Kiszka
2008-10-20 21:32 ` Gilles Chanteperdrix
@ 2008-10-21 7:36 ` Philippe Gerum
2008-10-21 8:24 ` Jan Kiszka
1 sibling, 1 reply; 20+ messages in thread
From: Philippe Gerum @ 2008-10-21 7:36 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> Jan Kiszka wrote:
>>>>>> Gilles Chanteperdrix wrote:
>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>> Jan Kiszka wrote:
>>>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>>>> I get this warning when compiling trunk:
>>>>>>>>>>
>>>>>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>>>>>> yes
>>>>>>>>>>
>>>>>>>>> That simple, it's a typo in this line:
>>>>>>>>>
>>>>>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>>>>>
>>>>>>>>> Also, that rm should be done outside the if block to play safe.
>>>>>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>>>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>>>>>> and if __thread is disabled, there is no segfault.
>>>>>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>>>>>
>>>>>> Interesting. What about removing the initial-exec attributes? Is
>>>>>> __thread otherwise know to work on your platform?
>>>>> Yes. This is a race condition, the real bug is, IMHO:
>>>>> __native_self = *iargs->task;
>>>>> When the segfault happens iargs->task is NULL. I suspect you are not
>>>>> supposed to use iargs after the __native_task_create syscall.
>>>> Yes, that was the problem.
>>> What did you change? Can you explain the why to me?
>> Because I guess iargs is no longer valid at this point. So, I saved the
>> task pointer and reused it.
>>
>
> Sorry, makes no sense to me: *iargs is on the stack of the
> rt_task_create caller, and that one is not expected to proceed until we
> issue __xn_sys_barrier.
>
Gilles is right, the caller may vanish before your thread variable is assigned.
__sys_barrier is there to synchronize with rt_task_start(), not internally with
the task creator.
parent: rt_task_create
-> child: rt_task_trampoline
-> xnshadow_map
-> wakeup_process(parent)
<parent stack unwinding>
-> child: assignment from automatic data, oops.
You may want to track how the completion block is used.
> Jan
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Xenomai-core mailing list
> Xenomai-core@domain.hid
> https://mail.gna.org/listinfo/xenomai-core
--
Philippe.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Xenomai-core] Warning when compiling trunk.
2008-10-21 7:36 ` Philippe Gerum
@ 2008-10-21 8:24 ` Jan Kiszka
0 siblings, 0 replies; 20+ messages in thread
From: Jan Kiszka @ 2008-10-21 8:24 UTC (permalink / raw)
To: rpm; +Cc: Xenomai core
[-- Attachment #1: Type: text/plain, Size: 2463 bytes --]
Philippe Gerum wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Jan Kiszka wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> Gilles Chanteperdrix wrote:
>>>>>> Jan Kiszka wrote:
>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>>> Jan Kiszka wrote:
>>>>>>>>>> Gilles Chanteperdrix wrote:
>>>>>>>>>>> I get this warning when compiling trunk:
>>>>>>>>>>>
>>>>>>>>>>> checking for __thread... rm: cannot remove `conftest1.dir': Is a directory
>>>>>>>>>>> yes
>>>>>>>>>>>
>>>>>>>>>> That simple, it's a typo in this line:
>>>>>>>>>>
>>>>>>>>>> http://www.rts.uni-hannover.de/xenomai/lxr/source/configure.in?v=SVN-trunk#394
>>>>>>>>>>
>>>>>>>>>> Also, that rm should be done outside the if block to play safe.
>>>>>>>>> Ok. But once this is fixed, I get a segmentation fault with __thread on
>>>>>>>>> ARM in rt_task_trampoline. I am currently testing the SIGWINCH thing,
>>>>>>>>> and if __thread is disabled, there is no segfault.
>>>>>>>> If a #ifdef 0 xeno_set_current, there is no segfault.
>>>>>>>>
>>>>>>> Interesting. What about removing the initial-exec attributes? Is
>>>>>>> __thread otherwise know to work on your platform?
>>>>>> Yes. This is a race condition, the real bug is, IMHO:
>>>>>> __native_self = *iargs->task;
>>>>>> When the segfault happens iargs->task is NULL. I suspect you are not
>>>>>> supposed to use iargs after the __native_task_create syscall.
>>>>> Yes, that was the problem.
>>>> What did you change? Can you explain the why to me?
>>> Because I guess iargs is no longer valid at this point. So, I saved the
>>> task pointer and reused it.
>>>
>> Sorry, makes no sense to me: *iargs is on the stack of the
>> rt_task_create caller, and that one is not expected to proceed until we
>> issue __xn_sys_barrier.
>>
>
> Gilles is right, the caller may vanish before your thread variable is assigned.
> __sys_barrier is there to synchronize with rt_task_start(), not internally with
> the task creator.
>
> parent: rt_task_create
> -> child: rt_task_trampoline
> -> xnshadow_map
> -> wakeup_process(parent)
> <parent stack unwinding>
> -> child: assignment from automatic data, oops.
>
> You may want to track how the completion block is used.
Damn, signal_completion is already invoked by xnshadow_map - OK, now
this makes a lot of sense.
Just checked the rest, and I introduced the same issue to vxworks. Will fix.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2008-10-21 8:24 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-20 19:30 [Xenomai-core] Warning when compiling trunk Gilles Chanteperdrix
2008-10-20 20:03 ` Jan Kiszka
2008-10-20 20:34 ` Gilles Chanteperdrix
2008-10-20 20:37 ` Gilles Chanteperdrix
2008-10-20 20:42 ` Jan Kiszka
2008-10-20 20:59 ` Gilles Chanteperdrix
2008-10-20 21:06 ` Gilles Chanteperdrix
2008-10-20 21:15 ` Jan Kiszka
2008-10-20 21:25 ` Gilles Chanteperdrix
2008-10-20 21:30 ` Jan Kiszka
2008-10-20 21:32 ` Gilles Chanteperdrix
2008-10-20 21:34 ` Jan Kiszka
2008-10-20 21:35 ` Gilles Chanteperdrix
2008-10-20 22:41 ` Jan Kiszka
2008-10-20 22:48 ` Gilles Chanteperdrix
2008-10-20 23:18 ` Gilles Chanteperdrix
2008-10-21 6:31 ` Jan Kiszka
2008-10-21 7:36 ` Philippe Gerum
2008-10-21 8:24 ` Jan Kiszka
2008-10-20 21:12 ` Jan Kiszka
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.