Hi, while debugging a weird problem during the sims campaign of one of the satellite simulators based on SIMULUS (SIMULUS 10.6.0 and sleapi-j 5.1.6) we have seen a possible concurrent access to one of the arrays in the implementation. In particular, we have seen a couple of requests to unbound links (from the MCS), i.e., two operations like the following:
"2026-05-21T06:55:31.677339000","Information","rcf=onlt0101","/Jvm","Unbound service instance"
"2026-05-21T06:55:31.677362000","Information","rcf=onlt0001","/Jvm","Unbound service instance
We understand the MCS requested to remove the binds very close in time (a few microseconds difference), one of them went through and the other one did not, producing the following exception:
java.lang.NullPointerException
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_Binder.cleanAssoc(EE_APIPX_Binder.java:241)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_AssocPxy.releaseChannel(EE_APIPX_AssocPxy.java:657)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_AssocPxy.takeData(EE_APIPX_AssocPxy.java:147)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_Link.rcvData(EE_APIPX_Link.java:354)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_Link.threadMain(EE_APIPX_Link.java:282)
at esa.sle.impl.api.apipx.pxcs.local.EE_APIPX_LocalLink.threadMain(EE_APIPX_LocalLink.java:239)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_Link$ReceivingThread.run(EE_APIPX_Link.java:701)
Reading the code in EE_APIPX_Binder.java:241, we have found that the only possibility is that next() returns a null pointer. This code seems to be removing an item from the list. We believe the two requests to unbind are trying to remove different elements in the list, and, because the list is not protected by a mutex, one may remove an element that the other is still trying to access. Is this possible?
Thank you in advance for your time!
Aitor and Agustín
Hi, while debugging a weird problem during the sims campaign of one of the satellite simulators based on SIMULUS (SIMULUS 10.6.0 and sleapi-j 5.1.6) we have seen a possible concurrent access to one of the arrays in the implementation. In particular, we have seen a couple of requests to unbound links (from the MCS), i.e., two operations like the following:
"2026-05-21T06:55:31.677339000","Information","rcf=onlt0101","/Jvm","Unbound service instance"
"2026-05-21T06:55:31.677362000","Information","rcf=onlt0001","/Jvm","Unbound service instance
We understand the MCS requested to remove the binds very close in time (a few microseconds difference), one of them went through and the other one did not, producing the following exception:
java.lang.NullPointerException
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_Binder.cleanAssoc(EE_APIPX_Binder.java:241)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_AssocPxy.releaseChannel(EE_APIPX_AssocPxy.java:657)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_AssocPxy.takeData(EE_APIPX_AssocPxy.java:147)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_Link.rcvData(EE_APIPX_Link.java:354)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_Link.threadMain(EE_APIPX_Link.java:282)
at esa.sle.impl.api.apipx.pxcs.local.EE_APIPX_LocalLink.threadMain(EE_APIPX_LocalLink.java:239)
at esa.sle.impl.api.apipx.pxcs.EE_APIPX_Link$ReceivingThread.run(EE_APIPX_Link.java:701)
Reading the code in EE_APIPX_Binder.java:241, we have found that the only possibility is that next() returns a null pointer. This code seems to be removing an item from the list. We believe the two requests to unbind are trying to remove different elements in the list, and, because the list is not protected by a mutex, one may remove an element that the other is still trying to access. Is this possible?
Thank you in advance for your time!
Aitor and Agustín