Binding problem with the positioning service after upgrading to legato 16.07

Hi everyone,

I used to work on Legato V16.04 using the following setup:
Firmware Version: SWI9X15Y_07.08.02.00 r31088 CARMD-EV-FRMWR1 2016/02/05 23:29:29
Bootloader Version: SWI9X15Y_07.08.02.00 r31088 CARMD-EV-FRMWR1 2016/02/05 23:29:29
Linux Version: 3.14.29ltsi-5d7a6bf7c6_ed88cc68b5 #20 PREEMPT Mon Oct 10 14:07:33 UTC 2016

I have developed a Legato app for a WP85xx that reads the GPS data using the fix on demand API as illustrated in the function Testle_pos_getInfo() on the following example:

Everything worked fine until I upgraded to Legato v16.07. My current setup is the following:
Firmware Version: SWI9X15Y_07.11.11.00 r33161 CARMD-EV-FRMWR1 2016/09/20 16:36:44
Bootloader Version: SWI9X15Y_07.11.11.00 r33161 CARMD-EV-FRMWR1 2016/09/20 16:36:44
Linux Version: 3.14.29ltsi-c14b887744_0c284d02b3 #6 PREEMPT Mon Oct 24 11:01:10 UTC 2016

In order to compile successfully my APP I had to upgrade the Legato developer studio to V4.1.1.201609120935 and use as a target platform: [Built-in] Legato for WP85/WP75 (16.7.0.wp85-wp75-native-x86_64-201610241259) - WP85XX

When I run my GPS APP i get the following output in my legato framework log:

Nov  7 12:27:03 | Legato | supervisor[23774]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting resource limit maxQueuedSignals to value 100.
Nov  7 12:27:03 | Legato | supervisor[23774]/supervisor T=main | proc.c proc_Start() 1133 | Starting process 'gpsapp' with pid 4059
Nov  7 12:27:03 | Legato | supervisor[4059]/supervisor T=main | proc.c proc_Start() 1101 | Execing 'gpsapp'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=unknown | LE_FILENAME InitPool() 303 | Memory pool name 'framework.hashMap_refPathIteratorMap' is truncated to 'framework.hashMap_refPathIterat'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.hashMap_refEventHandlers' is truncated to 'framework.hashMap_refEventHandl'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.hashMap_refDefault Timer SafeRe' is truncated to 'framework.hashMap_refDefault Ti'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.MessagingClientInterfaces' is truncated to 'framework.MessagingClientInterf'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.hashMap_refHandlersRef' is truncated to 'framework.hashMap_refHandlersRe'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.hashMap_MessagingServices' is truncated to 'framework.hashMap_MessagingServ'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.hashMap_MessagingClients' is truncated to 'framework.hashMap_MessagingClie'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.PipelineSIGCHLD-reports' is truncated to 'framework.PipelineSIGCHLD-repor'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME le_mem_ForceAlloc() 841 | Memory pool 'framework.DestructorObjs' overflowed. Expanded to 1 blocks.
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/<invalid> T=main | _componentMain.c _GPS_APPComponent_Init() 32 | Initializing GPS_APPComponent component library.
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.hashMap_refle_gnss_ClientHandle' is truncated to 'framework.hashMap_refle_gnss_Cl'
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME msgMessage_CreatePool() 112 | Pool name truncated to 'msgs-faefa899507b7af1a762f95a33' for protocol 'faefa899507b7af1a762f95a33a1e2ff'.
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME InitPool() 303 | Memory pool name 'framework.msgs-faefa899507b7af1a762f95a33' is truncated to 'framework.msgs-faefa899507b7af1'
Nov  7 12:27:03 | Legato | serviceDirectory[23777]/serviceDirectory_exe T=main | serviceDirectory.c DispatchToServer() 713 | Client (uid 0 'root', pid 4059) disagrees with server (uid 0 'root', pid 8176) on protocol ID of service 'gpsapp.GPS_APPC
Nov  7 12:27:03 | Legato | _UNKNOWN_[4059]/framework T=main | LE_FILENAME ReceiveSessionOpenResponse() 684 | Unexpected server response: -6 (LE_FAULT).
Nov  7 12:27:03 | Legato | supervisor[23774]/supervisor T=main | proc.c proc_SigChildHandler() 1832 | Process 'gpsapp' (PID: 4059) has exited with exit code 1.
Nov  7 12:27:03 | Legato | supervisor[23774]/supervisor T=main | proc.c GetFaultAction() 1634 | No fault action specified for process 'gpsapp'. Assuming 'ignore'.
Nov  7 12:27:04 | Legato | supervisor[23774]/supervisor T=main | app.c app_SigChildHandler() 3018 | Process 'gpsapp' in app 'GPS_APP' faulted: Ignored.
Nov  7 12:27:04 | Legato | supervisor[23774]/supervisor T=main | apps.c DeactivateAppContainer() 299 | Application 'GPS_APP' has stopped.
Nov  7 12:27:07 | Legato | supervisor[23774]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting resource limit maxCoreDumpFileBytes to value 524288.
Nov  7 12:27:07 | Legato | supervisor[23774]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting resource limit maxFileBytes to value 524288.
Nov  7 12:27:07 | Legato | supervisor[23774]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting resource limit maxLockedMemoryBytes to value 8192.
Nov  7 12:27:07 | Legato | supervisor[23774]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting resource limit maxFileDescriptors to value 256.
Nov  7 12:27:07 | Legato | supervisor[23774]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting resource limit maxMQueueBytes to value 512.
Nov  7 12:27:07 | Legato | supervisor[23774]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting resource limit maxThreads to value 20.
Nov  7 12:27:07 | Legato | supervisor[23774]/supervisor T=main | resourceLimits.c SetRLimitValue() 282 | Setting resource limit maxQueuedSignals to value 100.

More precisely the error seems to be when my GPS_APP, refered as client, tries to bind with the posDaemon, refered here as server.

I tried to eliminate any other possible problems by creating a new HelloWorld sample amplication which looks like this:
HellocWorld2.c

#include "legato.h"
COMPONENT_INIT
{
    LE_INFO("Hello, world.");
}

HelloWorld2.def

sandboxed: false
version: 1.0.0
maxFileSystemBytes: 512K
executables:
{
helloworld2 = ( HelloWorld2Component )
}
processes:
{
envVars:
{
LE_LOG_LEVEL = DEBUG
}

run:
{
    ( helloworld2 )
}

maxCoreDumpFileBytes: 512K maxFileBytes: 512K
}
bindings:
{
helloworld2.HelloWorld2Component.le_gnss → positioningService.le_gnss
helloworld2.HelloWorld2Component.le_pos → positioningService.le_pos
}
requires:
{
configTree:
{
[w] .
}
}

Component.cdef

requires:
{
api:
{
le_gnss.api
le_pos.api
}
}
sources:
{
HelloWorld2.c
}

Again I get the same error:

Nov  7 12:43:34 | Legato | serviceDirectory[23777]/serviceDirectory_exe T=main | serviceDirectory.c DispatchToServer() 713 | Client (uid 0 'root', pid 12716) disagrees with server (uid 0 'root', pid 8176) on protocol ID of service 'helloworld2.He
Nov  7 12:43:34 | Legato | _UNKNOWN_[12716]/framework T=main | LE_FILENAME ReceiveSessionOpenResponse() 684 | Unexpected server response: -6 (LE_FAULT).

Do you know how I could fix this? Thank you in advance :slight_smile:

Best regards,
Nick

Hi Nick,

did you try a clean build?
Maybe the incremental build is not detecting the framework has changed, and didn’t rebuild all that needs to be rebuilt…

Hi Daav,

Thanks for your answer. Yes I did a clean build to the GPS_APP.
The helloWorld2 app is a new project so I built it after I installed the new framework.

Hi Nick,

just done the test here, and after a clean build, the app is running fine on Legato 16.07
Please can you make sure of the Legato version running on your device?