Jan Kiszka wrote:
> xenomai-git-requ...@gna.org wrote:
>> diff --git a/src/skins/common/current.c b/src/skins/common/current.c
>> index 7277189..5d418a4 100644
>> --- a/src/skins/common/current.c
>> +++ b/src/skins/common/current.c
>> @@ -29,8 +29,6 @@ static inline unsigned long *create_current_mode(void)
>>  
>>  static inline void free_current_mode(unsigned long *mode) { }
>>  
>> -#define XENO_MODE_LEAK_WARNING ""
>> -
>>  #else /* !HAVE___THREAD */
>>  
>>  pthread_key_t xeno_current_key;
>> @@ -56,8 +54,9 @@ static inline void free_current_mode(unsigned long *mode)
>>  }
>>  
>>  #define XENO_MODE_LEAK_WARNING \
>> -    "         To reduce the probality, we leak a few bytes of heap " \
>> -    "per thread.\n"
>> +    "Xenomai: WARNING, this version of Xenomai kernel is anterior to" \
>> +    " 2.5.2.\nIn order to avoid getting memory corruption, we leak 4" \
>> +    " bytes per thread.\nUpgrade is recommended.\n"
>>  
>>  #endif /* !HAVE___THREAD */
>>  
>> @@ -70,20 +69,18 @@ static void cleanup_current_mode(void *key)
>>  
>>      err = XENOMAI_SYSCALL0(__xn_sys_drop_u_mode);
>>  
>> -    if (err) {
>> +    if (!err)
>> +            free_current_mode(mode);
>> +#ifdef XENO_MODE_LEAK_WARNING
>> +    else {
>>              static int warned;
>>  
>>              if (!warned) {
>>                      warned = 1;
>> -                    fprintf(stderr,
>> -                            "\nXenomai: WARNING, this Xenomai kernel can "
>> -                                    "cause spurious application\n"
>> -                            "         crashes on thread termination. "
>> -                                    "Upgrade is highly recommended.\n%s\n",
>> -                            XENO_MODE_LEAK_WARNING);
>> +                    fprintf(stderr, XENO_MODE_LEAK_WARNING);
>>              }
>> -    } else
>> -            free_current_mode(mode);
>> +    }
>> +#endif /* XENO_MODE_LEAK_WARNING */
>>  }
>>  
>>  static void init_current_keys(void)
>>
> 
> This no longer issues a warning for the __thread case. We might have
> been lucky that there was no issue in practice, but are we sure? That
> was my motivation to warn about both scenarios.

No, you are right. I got all mixed up. I assumed that since we were
setting the current_mode to an invalid state, we were safe. But
obviously, this does not work with the older kernel-space support.

-- 
                                            Gilles.

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to