On 11/23/2017 04:15 PM, Leopold Palomo-Avellaneda wrote:
> On 23/11/17 16:12, Philippe Gerum wrote:
>> On 11/23/2017 04:08 PM, Leopold Palomo-Avellaneda wrote:
>>> On 23/11/17 16:04, Philippe Gerum wrote:
>>>> On 11/23/2017 03:58 PM, Leopold Palomo-Avellaneda wrote:
>>>>> On 23/11/17 13:22, Philippe Gerum wrote:
>>>>>> On 11/23/2017 01:10 PM, Leopold Palomo-Avellaneda wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>>
>>>>>>> I have seen this bug before, but it seems that it's again in 3.0.6. 
>>>>>>> Running
>>>>>>> 3.0.6 with:
>>>>>>>
>>>>>>>  xeno-config --info
>>>>>>> Xenomai version: Xenomai/cobalt v3.0.6
>>>>>>> Linux bmm3 4.9.51-xenomai-3.0.6-ipipe #1 SMP Thu Nov 23 09:03:27 CET 
>>>>>>> 2017 x86_64
>>>>>>> GNU/Linux
>>>>>>> Kernel parameters: BOOT_IMAGE=/boot/vmlinuz-4.9.51-xenomai-3.0.6-ipipe
>>>>>>> root=UUID=ab96eed9-cd79-4d30-9e93-e9f32a18cca6 ro quiet
>>>>>>> xenomai.allowed_group=113 nosmap
>>>>>>> I-pipe release #4 detected
>>>>>>> Cobalt core 3.0.6 detected
>>>>>>> Compiler: gcc version 6.3.0 20170516 (Debian 6.3.0-18)
>>>>>>> Build args: --build=x86_64-linux-gnu --includedir=/usr/include
>>>>>>> --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/etc
>>>>>>> --localstatedir=/var --disable-silent-rules 
>>>>>>> --libdir=/usr/lib/x86_64-linux-gnu
>>>>>>> --libexecdir=/usr/lib/x86_64-linux-gnu --disable-maintainer-mode
>>>>>>> --disable-dependency-tracking --prefix=/usr 
>>>>>>> --includedir=/usr/include/xenomai
>>>>>>> --mandir=/usr/share/man --with-testdir=/usr/lib/x86_64-linux-gnu/xenomai
>>>>>>> --enable-fortify --libdir=/usr/lib/x86_64-linux-gnu/ --enable-pshared
>>>>>>> --enable-registry --enable-doc-build --enable-dlopen-libs --enable-tls
>>>>>>> --enable-smp --with-core=cobalt --build x86_64-linux-gnu
>>>>>>> build_alias=x86_64-linux-gnu CFLAGS=-g -O2
>>>>>>> -fdebug-prefix-map=/build/xenomai-3.0.6+ds1=. -fstack-protector-strong 
>>>>>>> -Wformat
>>>>>>> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 
>>>>>>> -fno-omit-frame-pointer
>>>>>>> LDFLAGS=-Wl,-z,relro -Wl,-z,now -Wl,--as-needed CPPFLAGS=-Wdate-time
>>>>>>> -D_FORTIFY_SOURCE=2
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> when I try xeno-test, I got:
>>>>>>>
>>>>>>>  xeno-test
>>>>>>> Started child 2593: /bin/bash
>>>>>>> /usr/lib/x86_64-linux-gnu/xenomai/xeno-test-run-wrapper 
>>>>>>> /usr/bin/xeno-test
>>>>>>> ++ echo 0
>>>>>>> ++ testdir=/usr/lib/x86_64-linux-gnu/xenomai
>>>>>>> ++ /usr/lib/x86_64-linux-gnu/xenomai/smokey --run
>>>>>>> init_memory_pool(): invalid pool
>>>>>>>    0"000.022| BUG in heapobj_pkg_init_private(): [main] cannot 
>>>>>>> initialize TLSF
>>>>>>> memory manager
>>>>>>>
>>>>>>>
>>>>>>> Any idea?
>>>>>>>
>>>>>>
>>>>>> Can you check whether the call to tlsf_malloc() in
>>>>>> heapobj_pkg_init_private() returns non-NULL?
>>>>>> (lib/copperplate/heapobj-tlsf.c), and print out the value of alloc_size 
>>>>>> too?
>>>>>
>>>>> Checking the code, it fails before to return anything. Running 
>>>>> crosss-link, that
>>>>> fails in the same function:
>>>>> ./cross-link
>>>>>
>>>>> init_memory_pool(): invalid pool
>>>>> Init memory pool returns -1 bytes
>>>>>    0"000.041| BUG in heapobj_pkg_init_private(): [main] cannot initialize 
>>>>> TLSF
>>>>> memory manager
>>>>>
>>>>>
>>>>> I just added:
>>>>>
>>>>> +      printf("Init memory pool returns %zd bytes \n", available_size);
>>>>>
>>>>>         if (available_size == (size_t)-1)
>>>>>                 panic("cannot initialize TLSF memory manager");
>>>>>
>>>>> +     printf("Running after ...\n");
>>>>>
>>>>>
>>>>> in that function of the file you mentioned.
>>>>>
>>>>
>>>> Can you try this?
>>>>
>>>> diff --git a/lib/copperplate/heapobj-tlsf.c 
>>>> b/lib/copperplate/heapobj-tlsf.c
>>>> index 370985210..0186be423 100644
>>>> --- a/lib/copperplate/heapobj-tlsf.c
>>>> +++ b/lib/copperplate/heapobj-tlsf.c
>>>> @@ -103,6 +103,7 @@ int heapobj_pkg_init_private(void)
>>>>     * out the allocation overhead.
>>>>     */
>>>>    mem = tlsf_malloc(alloc_size);
>>>> +  printf("mem=%p, alloc_size=%zu\n", mem, alloc_size);
>>>>    available_size = init_memory_pool(alloc_size, mem);
>>>>    if (available_size == (size_t)-1)
>>>>            panic("cannot initialize TLSF memory manager");
>>>>
>>> ./cross-link
>>> mem=0x7f70b739a8e0, alloc_size=4096
>>> init_memory_pool(): invalid pool
>>> Init memory pool returns -1 bytes
>>>    0"000.029| BUG in heapobj_pkg_init_private(): [main] cannot initialize 
>>> TLSF
>>> memory manager
>>>
>>
>> Ok, so please try this:
>>
>> diff --git a/lib/copperplate/heapobj-tlsf.c b/lib/copperplate/heapobj-tlsf.c
>> index 370985210..948f7fc52 100644
>> --- a/lib/copperplate/heapobj-tlsf.c
>> +++ b/lib/copperplate/heapobj-tlsf.c
>> @@ -78,7 +78,7 @@ int heapobj_init_array_private(struct heapobj *hobj, const 
>> char *name,
>>  int heapobj_pkg_init_private(void)
>>  {
>>      #ifdef CONFIG_XENO_PSHARED
>> -            size_t alloc_size = sysconf(_SC_PAGE_SIZE);
>> +            size_t alloc_size = sysconf(_SC_PAGE_SIZE) * 2;
>>      #else
>>              size_t alloc_size = __copperplate_setup_data.mem_pool;
>>      #endif
>>
>>
> 
> with my user
> 
> ./cross-link
> mem=0x7f0d630488e0, alloc_size=8192
> Init memory pool returns 1808 bytes
> Running after ...
> sysregd:
> create_directory_recursive("/var/run/xenomai/leopold.palomo/anon@19479"):
> Permission denied
> sysregd:
> create_directory_recursive("/var/run/xenomai/leopold.palomo/anon@19479"):
> Permission denied
> sysregd:
> create_directory_recursive("/var/run/xenomai/leopold.palomo/anon@19479"):
> Permission denied
>    0"610.664| WARNING: [main] cannot connect to registry daemon
>    0"610.798| WARNING: [main] setup call copperplate failed
>    0"610.830| BUG in __xenomai_init(): [main] initialization failed, EAGAIN
> 
> with sudo ...
> 
> leopold.palomo@bmm3 ~/xenomai/xenomai-3.0.6/system/demo$ sudo ./cross-link
> mem=0x7fc9e73f88e0, alloc_size=8192
> Init memory pool returns 1808 bytes
> Running after ...
> mem=0x7f2e146318e0, alloc_size=8192
> Init memory pool returns 1808 bytes
> Running after ...
> main : can't open /dev/rtdm/rtser0 (write), No such file or directory
> 
> 
> seems you are near ....
> 

The two issues are unrelated AFAICT. The memory init issue is gone, and
I can explain why. The Permission denied issue is odd though, and you
may want to check /var/run/xenomai for perms.

Not being able to open rtser0 is yet another kind of problem: the uart
driver is not up and running, so the devices were not created. crosslink
definitely needs such driver.

-- 
Philippe.

_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
https://xenomai.org/mailman/listinfo/xenomai

Reply via email to