* [Xenomai-help] rt_task_join() call hangs in shared lib destructor
[not found] <11882793.141303825258312.JavaMail.SYSTEM@pc-msalvini>
@ 2011-04-26 13:50 ` Mauro Salvini
2011-04-26 18:06 ` Gilles Chanteperdrix
2011-04-27 16:59 ` Gilles Chanteperdrix
0 siblings, 2 replies; 9+ messages in thread
From: Mauro Salvini @ 2011-04-26 13:50 UTC (permalink / raw)
To: xenomai
[-- Attachment #1: Type: text/plain, Size: 3899 bytes --]
Hi,
as from mail subject, I have an issue with rt_task_join() when called into shared object destructor.
I run xenomai 2.5.5.2 IPipe patch 2.7-4 on x86 2.6.35.7 kernel, Ubuntu Lucid 10.04.1.
I have a simple code attached to mail, where main program opens a shared object with dlopen(). Shared object constructor launches a joinable real-time task. Main program sleeps 5 seconds and then calls dlclose(). Shared object destructor breaks real time task cycle and joins task, but rt_join_call() hangs application indefinitely.
Initially it seems me to be due to this libc bug:
https://bugzilla.redhat.com/show_bug.cgi?id=549813
In facts my system originally has libc6 version 2.11.1 that contains this bug (attached example to bugtrace hangs on pthread_join() call).
So I patched libc with suggested patch (that was applied on libc6 2.12, but unfortunately I cannot install it from .deb package because it was built for Ubuntu 10.10 only). Then I rebuild deb package with debuild command and updated my libc6 library: pthread_join() issue disappears, but rt_task_join() issue stills remain.
I tried to run same xenomai-patched kernel on an Ubuntu 10.10 system (that comes with libc6 version 2.12), same result obtained (rt_task_join() hangs).
I run test application under gdb, this is the backtrace for each task when it hangs:
(gdb) info thread
3 Thread 0xb7e34b70 (LWP 1684) 0xb7fe2424 in __kernel_vsyscall ()
2 Thread 0xb7e42b70 (LWP 1683) 0xb7fe2424 in __kernel_vsyscall ()
* 1 Thread 0xb7e436d0 (LWP 1680) 0xb7fe2424 in __kernel_vsyscall ()
thread 1:
(gdb) bt
#0 0xb7fe2424 in __kernel_vsyscall ()
#1 0xb7fb7b5d in pthread_join () from /lib/tls/i686/cmov/libpthread.so.0
#2 0xb7fd7181 in rt_task_join () from /usr/xenomai/lib/libnative.so.3
#3 0xb7e357ad in TestModExit () at TestMod.c:35
#4 0xb7e35668 in __do_global_dtors_aux () from ./libTestMod.so
#5 0xb7e35820 in _fini () from ./libTestMod.so
#6 0xb7ff578e in ?? () from /lib/ld-linux.so.2
#7 0xb7ff6247 in ?? () from /lib/ld-linux.so.2
#8 0xb7fa8ca4 in ?? () from /lib/tls/i686/cmov/libdl.so.2
#9 0xb7ff0836 in ?? () from /lib/ld-linux.so.2
#10 0xb7fa909c in ?? () from /lib/tls/i686/cmov/libdl.so.2
#11 0xb7fa8cda in dlclose () from /lib/tls/i686/cmov/libdl.so.2
#12 0x080486b1 in main (argc=1, argv=0xbffff864) at main.c:18
thread 2:
(gdb) bt
#0 0xb7fe2424 in __kernel_vsyscall ()
#1 0xb7fbe736 in nanosleep () from /lib/tls/i686/cmov/libpthread.so.0
#2 0xb7fad92e in printer_loop () from /usr/xenomai/lib/librtdk.so.0
#3 0xb7fb696e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#4 0xb7f1ba4e in clone () from /lib/tls/i686/cmov/libc.so.6
thread 3:
(gdb) bt
#0 0xb7fe2424 in __kernel_vsyscall ()
#1 0xb7fbdaf9 in __lll_lock_wait () from /lib/tls/i686/cmov/libpthread.so.0
#2 0xb7fb9149 in _L_lock_839 () from /lib/tls/i686/cmov/libpthread.so.0
#3 0xb7fb8fdb in pthread_mutex_lock () from /lib/tls/i686/cmov/libpthread.so.0
#4 0xb7ff45cd in ?? () from /lib/ld-linux.so.2
#5 0xb7f524a2 in ?? () from /lib/tls/i686/cmov/libc.so.6
#6 0xb7ff0836 in ?? () from /lib/ld-linux.so.2
#7 0xb7f525a1 in ?? () from /lib/tls/i686/cmov/libc.so.6
#8 0xb7f526bb in __libc_dlopen_mode () from /lib/tls/i686/cmov/libc.so.6
#9 0xb7fbfb47 in pthread_cancel_init () from /lib/tls/i686/cmov/libpthread.so.0
#10 0xb7fbfcbd in _Unwind_ForcedUnwind () from /lib/tls/i686/cmov/libpthread.so.0
#11 0xb7fbd788 in __pthread_unwind () from /lib/tls/i686/cmov/libpthread.so.0
#12 0xb7fb79e0 in pthread_exit () from /lib/tls/i686/cmov/libpthread.so.0
#13 0xb7fd8665 in rt_task_trampoline () from /usr/xenomai/lib/libnative.so.3
#14 0xb7fb696e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#15 0xb7f1ba4e in clone () from /lib/tls/i686/cmov/libc.so.6
It seems to be another issue into libc6. Or my Xenomai system could be corrupted/misconfigured elsewhere?
Thanks in advance, regards.
[-- Attachment #2: sample.zip --]
[-- Type: application/x-zip-compressed, Size: 1494 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xenomai-help] rt_task_join() call hangs in shared lib destructor
2011-04-26 13:50 ` [Xenomai-help] rt_task_join() call hangs in shared lib destructor Mauro Salvini
@ 2011-04-26 18:06 ` Gilles Chanteperdrix
2011-04-27 16:59 ` Gilles Chanteperdrix
1 sibling, 0 replies; 9+ messages in thread
From: Gilles Chanteperdrix @ 2011-04-26 18:06 UTC (permalink / raw)
To: Mauro Salvini; +Cc: xenomai
Mauro Salvini wrote:
> Hi,
>
> as from mail subject, I have an issue with rt_task_join() when called into shared object destructor.
>
> I run xenomai 2.5.5.2 IPipe patch 2.7-4 on x86 2.6.35.7 kernel, Ubuntu Lucid 10.04.1.
Do you have the same issue with the latest version of the branch you
use? That is 2.5.6?
Has not pthread_join alone the same behaviour?
--
Gilles.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xenomai-help] rt_task_join() call hangs in shared lib destructor
[not found] <30435812.01303909424265.JavaMail.SYSTEM@pc-msalvini>
@ 2011-04-27 13:06 ` Mauro Salvini
0 siblings, 0 replies; 9+ messages in thread
From: Mauro Salvini @ 2011-04-27 13:06 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
[-- Attachment #1: Type: text/plain, Size: 436 bytes --]
> Do you have the same issue with the latest version of the branch you
> use? That is 2.5.6?
Hi,
Xenomai 2.5.6 on 2.6.35.9 kernel, IPipe patch 2.8-04 has same behavior.
Now I'm compiling 2.6.37 kernel with 2.9-00 IPipe patch, I'll try it and give you results.
> Has not pthread_join alone the same behaviour?
Yes, in past I got this behavior on pthread_join()/rt-task_join(), work-arounded without using T_JOINABLE flag.
[-- Attachment #2: Type: text/html, Size: 650 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xenomai-help] rt_task_join() call hangs in shared lib destructor
2011-04-26 13:50 ` [Xenomai-help] rt_task_join() call hangs in shared lib destructor Mauro Salvini
2011-04-26 18:06 ` Gilles Chanteperdrix
@ 2011-04-27 16:59 ` Gilles Chanteperdrix
1 sibling, 0 replies; 9+ messages in thread
From: Gilles Chanteperdrix @ 2011-04-27 16:59 UTC (permalink / raw)
To: Mauro Salvini; +Cc: xenomai
Mauro Salvini wrote:
> Hi,
>
> as from mail subject, I have an issue with rt_task_join() when called into shared object destructor.
>
> I run xenomai 2.5.5.2 IPipe patch 2.7-4 on x86 2.6.35.7 kernel, Ubuntu Lucid 10.04.1.
> I have a simple code attached to mail, where main program opens a shared object with dlopen(). Shared object constructor launches a joinable real-time task. Main program sleeps 5 seconds and then calls dlclose(). Shared object destructor breaks real time task cycle and joins task, but rt_join_call() hangs application indefinitely.
>
> Initially it seems me to be due to this libc bug:
> https://bugzilla.redhat.com/show_bug.cgi?id=549813
>
> In facts my system originally has libc6 version 2.11.1 that contains this bug (attached example to bugtrace hangs on pthread_join() call).
> So I patched libc with suggested patch (that was applied on libc6 2.12, but unfortunately I cannot install it from .deb package because it was built for Ubuntu 10.10 only). Then I rebuild deb package with debuild command and updated my libc6 library: pthread_join() issue disappears, but rt_task_join() issue stills remain.
>
> I tried to run same xenomai-patched kernel on an Ubuntu 10.10 system (that comes with libc6 version 2.12), same result obtained (rt_task_join() hangs).
>
> I run test application under gdb, this is the backtrace for each task when it hangs:
>
> (gdb) info thread
> 3 Thread 0xb7e34b70 (LWP 1684) 0xb7fe2424 in __kernel_vsyscall ()
> 2 Thread 0xb7e42b70 (LWP 1683) 0xb7fe2424 in __kernel_vsyscall ()
> * 1 Thread 0xb7e436d0 (LWP 1680) 0xb7fe2424 in __kernel_vsyscall ()
>
>
> thread 1:
> (gdb) bt
> #0 0xb7fe2424 in __kernel_vsyscall ()
> #1 0xb7fb7b5d in pthread_join () from /lib/tls/i686/cmov/libpthread.so.0
> #2 0xb7fd7181 in rt_task_join () from /usr/xenomai/lib/libnative.so.3
> #3 0xb7e357ad in TestModExit () at TestMod.c:35
> #4 0xb7e35668 in __do_global_dtors_aux () from ./libTestMod.so
> #5 0xb7e35820 in _fini () from ./libTestMod.so
> #6 0xb7ff578e in ?? () from /lib/ld-linux.so.2
> #7 0xb7ff6247 in ?? () from /lib/ld-linux.so.2
> #8 0xb7fa8ca4 in ?? () from /lib/tls/i686/cmov/libdl.so.2
> #9 0xb7ff0836 in ?? () from /lib/ld-linux.so.2
> #10 0xb7fa909c in ?? () from /lib/tls/i686/cmov/libdl.so.2
> #11 0xb7fa8cda in dlclose () from /lib/tls/i686/cmov/libdl.so.2
> #12 0x080486b1 in main (argc=1, argv=0xbffff864) at main.c:18
>
>
> thread 2:
> (gdb) bt
> #0 0xb7fe2424 in __kernel_vsyscall ()
> #1 0xb7fbe736 in nanosleep () from /lib/tls/i686/cmov/libpthread.so.0
> #2 0xb7fad92e in printer_loop () from /usr/xenomai/lib/librtdk.so.0
> #3 0xb7fb696e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
> #4 0xb7f1ba4e in clone () from /lib/tls/i686/cmov/libc.so.6
>
>
> thread 3:
> (gdb) bt
> #0 0xb7fe2424 in __kernel_vsyscall ()
> #1 0xb7fbdaf9 in __lll_lock_wait () from /lib/tls/i686/cmov/libpthread.so.0
> #2 0xb7fb9149 in _L_lock_839 () from /lib/tls/i686/cmov/libpthread.so.0
> #3 0xb7fb8fdb in pthread_mutex_lock () from /lib/tls/i686/cmov/libpthread.so.0
> #4 0xb7ff45cd in ?? () from /lib/ld-linux.so.2
> #5 0xb7f524a2 in ?? () from /lib/tls/i686/cmov/libc.so.6
> #6 0xb7ff0836 in ?? () from /lib/ld-linux.so.2
> #7 0xb7f525a1 in ?? () from /lib/tls/i686/cmov/libc.so.6
> #8 0xb7f526bb in __libc_dlopen_mode () from /lib/tls/i686/cmov/libc.so.6
> #9 0xb7fbfb47 in pthread_cancel_init () from /lib/tls/i686/cmov/libpthread.so.0
> #10 0xb7fbfcbd in _Unwind_ForcedUnwind () from /lib/tls/i686/cmov/libpthread.so.0
> #11 0xb7fbd788 in __pthread_unwind () from /lib/tls/i686/cmov/libpthread.so.0
> #12 0xb7fb79e0 in pthread_exit () from /lib/tls/i686/cmov/libpthread.so.0
> #13 0xb7fd8665 in rt_task_trampoline () from /usr/xenomai/lib/libnative.so.3
> #14 0xb7fb696e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
> #15 0xb7f1ba4e in clone () from /lib/tls/i686/cmov/libc.so.6
>
>
> It seems to be another issue into libc6. Or my Xenomai system could be corrupted/misconfigured elsewhere?
It looks like a typical pthread_join deadlock. The thread you are
joining is locked on a pthread mutex, that some other thread (I would
say, the one calling pthread_join) has. It can not work. You should not
call pthread_join while holding a mutex.
If this is not the issue, would you please take the time to post a
self-contained test case which I can run to reproduce the issue?
Thanks.
--
Gilles.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xenomai-help] rt_task_join() call hangs in shared lib destructor
[not found] <27947354.221303982673109.JavaMail.SYSTEM@pc-msalvini>
@ 2011-04-28 9:26 ` Mauro Salvini
2011-04-28 11:06 ` Gilles Chanteperdrix
0 siblings, 1 reply; 9+ messages in thread
From: Mauro Salvini @ 2011-04-28 9:26 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
[-- Attachment #1.1: Type: text/plain, Size: 1489 bytes --]
> It looks like a typical pthread_join deadlock. The thread you are
> joining is locked on a pthread mutex, that some other thread (I would
> say, the one calling pthread_join) has. It can not work. You should not
> call pthread_join while holding a mutex.
Yes, it looks like this, but I don't use any mutex in my task. It looks like dlclose() locks a mutex used also by pthread_join() (that was called into shared object destructor), and here is deadlock. But executing realtime task as normal thread does not raise this issue.
Another strange behaviour: if task was not created with rt_task_create()-rt_task_start(), but becomes real time from a thread with rt_task_shadow(), it works properly.
Summarizing:
- create task with rt_task_create()-rt_task_start() and join it in shared object destructor with rt_task_join() -> deadlock
- create a thread with pthread_create(), make it real-time with rt_task_shadow() and join it in destructor with rt_task_join() -> works fine
- create a thread with pthread_create(), join it in destructor with pthread_join() -> works fine
Same behaviors on kernel 2.6.37 with Xenomai 2.5.6 Ipipe 2.9-00 .
> If this is not the issue, would you please take the time to post a
> self-contained test case which I can run to reproduce the issue?
Was attached on my first mail, I re-attach it to this mail. I also added 2nd and 3rd case explained above: you can select each case with three #defines into TestMod.c.
Many thanks, regards.
[-- Attachment #1.2: Type: text/html, Size: 1971 bytes --]
[-- Attachment #2: sample.zip --]
[-- Type: application/x-zip-compressed, Size: 1751 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xenomai-help] rt_task_join() call hangs in shared lib destructor
2011-04-28 9:26 ` Mauro Salvini
@ 2011-04-28 11:06 ` Gilles Chanteperdrix
2011-04-28 11:45 ` Gilles Chanteperdrix
0 siblings, 1 reply; 9+ messages in thread
From: Gilles Chanteperdrix @ 2011-04-28 11:06 UTC (permalink / raw)
To: Mauro Salvini; +Cc: xenomai
Mauro Salvini wrote:
>
>> It looks like a typical pthread_join deadlock. The thread you are
>> joining is locked on a pthread mutex, that some other thread (I
>> would say, the one calling pthread_join) has. It can not work. You
>> should not call pthread_join while holding a mutex.
>
> Yes, it looks like this, but I don't use any mutex in my task. It
> looks like dlclose() locks a mutex used also by pthread_join() (that
> was called into shared object destructor), and here is deadlock. But
> executing realtime task as normal thread does not raise this issue.
The trace you sent clearly shows that the problem happens because
rt_task_trampoline calls pthread_exit. In your tests with
rt_task_shadow/pthread_create, did you try to use pthread_exit? Or could
you try replacing the call to pthread_exit in rt_task_trampoline with a
return?
--
Gilles.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xenomai-help] rt_task_join() call hangs in shared lib destructor
2011-04-28 11:06 ` Gilles Chanteperdrix
@ 2011-04-28 11:45 ` Gilles Chanteperdrix
0 siblings, 0 replies; 9+ messages in thread
From: Gilles Chanteperdrix @ 2011-04-28 11:45 UTC (permalink / raw)
To: Mauro Salvini; +Cc: xenomai
Gilles Chanteperdrix wrote:
> Mauro Salvini wrote:
>>> It looks like a typical pthread_join deadlock. The thread you are
>>> joining is locked on a pthread mutex, that some other thread (I
>>> would say, the one calling pthread_join) has. It can not work. You
>>> should not call pthread_join while holding a mutex.
>> Yes, it looks like this, but I don't use any mutex in my task. It
>> looks like dlclose() locks a mutex used also by pthread_join() (that
>> was called into shared object destructor), and here is deadlock. But
>> executing realtime task as normal thread does not raise this issue.
>
> The trace you sent clearly shows that the problem happens because
> rt_task_trampoline calls pthread_exit. In your tests with
> rt_task_shadow/pthread_create, did you try to use pthread_exit? Or could
> you try replacing the call to pthread_exit in rt_task_trampoline with a
> return?
Answering to myself: no, in your examples you did not use pthread_exit,
that is the difference with the rt_task_create case.
So, could you try the following patch?
diff --git a/src/skins/native/task.c b/src/skins/native/task.c
index be4ea2c..70ba6f7 100644
--- a/src/skins/native/task.c
+++ b/src/skins/native/task.c
@@ -113,7 +113,7 @@ static void *rt_task_trampoline(void *cookie)
fail:
- pthread_exit((void *)err);
+ return (void *)err;
}
int rt_task_create(RT_TASK *task,
--
Gilles.
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Xenomai-help] rt_task_join() call hangs in shared lib destructor
[not found] <33469777.411303994184796.JavaMail.SYSTEM@pc-msalvini>
@ 2011-04-28 12:41 ` Mauro Salvini
2011-04-28 13:33 ` Gilles Chanteperdrix
0 siblings, 1 reply; 9+ messages in thread
From: Mauro Salvini @ 2011-04-28 12:41 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
> Gilles Chanteperdrix wrote:
>> Mauro Salvini wrote:
>>>> It looks like a typical pthread_join deadlock. The thread you are
>>>> joining is locked on a pthread mutex, that some other thread (I
>>>> would say, the one calling pthread_join) has. It can not work. You
>>>> should not call pthread_join while holding a mutex.
>>> Yes, it looks like this, but I don't use any mutex in my task. It
>>> looks like dlclose() locks a mutex used also by pthread_join() (that
>>> was called into shared object destructor), and here is deadlock. But
>>> executing realtime task as normal thread does not raise this issue.
>>
>> The trace you sent clearly shows that the problem happens because
>> rt_task_trampoline calls pthread_exit. In your tests with
>> rt_task_shadow/pthread_create, did you try to use pthread_exit? Or could
>> you try replacing the call to pthread_exit in rt_task_trampoline with a
>> return?
>
> Answering to myself: no, in your examples you did not use pthread_exit,
> that is the difference with the rt_task_create case.
>
> So, could you try the following patch?
>
> diff --git a/src/skins/native/task.c b/src/skins/native/task.c
> index be4ea2c..70ba6f7 100644
> --- a/src/skins/native/task.c
> +++ b/src/skins/native/task.c
> @@ -113,7 +113,7 @@ static void *rt_task_trampoline(void *cookie)
>
> fail:
>
> - pthread_exit((void *)err);
> + return (void *)err;
> }
>
> int rt_task_create(RT_TASK *task,
>
>
Yes, patch works: rt_task_join works correctly now.
By the way, before apply patch, as you suggest in your penultimate mail, I tried to use pthread_exit in tests with rt_task_shadow/pthread_create: application hangs as with rt_task_create().
So, I deduce that pthread_exit must not be called into shared object threads/tasks, to avoid joining hangs when object destructor was called. Is this a libc bug or is the normal way of coding?
Thank you very much Gilles for your precious help!
Regards
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xenomai-help] rt_task_join() call hangs in shared lib destructor
2011-04-28 12:41 ` Mauro Salvini
@ 2011-04-28 13:33 ` Gilles Chanteperdrix
0 siblings, 0 replies; 9+ messages in thread
From: Gilles Chanteperdrix @ 2011-04-28 13:33 UTC (permalink / raw)
To: Mauro Salvini; +Cc: xenomai
Mauro Salvini wrote:
>> Gilles Chanteperdrix wrote:
>>> Mauro Salvini wrote:
>>>>> It looks like a typical pthread_join deadlock. The thread you
>>>>> are joining is locked on a pthread mutex, that some other
>>>>> thread (I would say, the one calling pthread_join) has. It
>>>>> can not work. You should not call pthread_join while holding
>>>>> a mutex.
>>>> Yes, it looks like this, but I don't use any mutex in my task.
>>>> It looks like dlclose() locks a mutex used also by
>>>> pthread_join() (that was called into shared object destructor),
>>>> and here is deadlock. But executing realtime task as normal
>>>> thread does not raise this issue.
>>> The trace you sent clearly shows that the problem happens because
>>> rt_task_trampoline calls pthread_exit. In your tests with
>>> rt_task_shadow/pthread_create, did you try to use pthread_exit?
>>> Or could you try replacing the call to pthread_exit in
>>> rt_task_trampoline with a return?
>> Answering to myself: no, in your examples you did not use
>> pthread_exit, that is the difference with the rt_task_create case.
>>
>>
>> So, could you try the following patch?
>>
>> diff --git a/src/skins/native/task.c b/src/skins/native/task.c
>> index be4ea2c..70ba6f7 100644 --- a/src/skins/native/task.c +++
>> b/src/skins/native/task.c @@ -113,7 +113,7 @@ static void
>> *rt_task_trampoline(void *cookie)
>>
>> fail:
>>
>> - pthread_exit((void *)err); + return (void *)err; }
>>
>> int rt_task_create(RT_TASK *task,
>>
>>
>
> Yes, patch works: rt_task_join works correctly now.
>
> By the way, before apply patch, as you suggest in your penultimate
> mail, I tried to use pthread_exit in tests with
> rt_task_shadow/pthread_create: application hangs as with
> rt_task_create().
>
> So, I deduce that pthread_exit must not be called into shared object
> threads/tasks, to avoid joining hangs when object destructor was
> called. Is this a libc bug or is the normal way of coding?
>
> Thank you very much Gilles for your precious help! Regards
It definitely has nothing to do with Xenomai, whether this is a glibc
bug or not, only glibc maintainers can answer.
But the workaround is easy, just create a function to shutdown the
thread in the .so object. And call this function before dlclose.
--
Gilles.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-04-28 13:33 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <11882793.141303825258312.JavaMail.SYSTEM@pc-msalvini>
2011-04-26 13:50 ` [Xenomai-help] rt_task_join() call hangs in shared lib destructor Mauro Salvini
2011-04-26 18:06 ` Gilles Chanteperdrix
2011-04-27 16:59 ` Gilles Chanteperdrix
[not found] <30435812.01303909424265.JavaMail.SYSTEM@pc-msalvini>
2011-04-27 13:06 ` Mauro Salvini
[not found] <27947354.221303982673109.JavaMail.SYSTEM@pc-msalvini>
2011-04-28 9:26 ` Mauro Salvini
2011-04-28 11:06 ` Gilles Chanteperdrix
2011-04-28 11:45 ` Gilles Chanteperdrix
[not found] <33469777.411303994184796.JavaMail.SYSTEM@pc-msalvini>
2011-04-28 12:41 ` Mauro Salvini
2011-04-28 13:33 ` Gilles Chanteperdrix
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.