Activation status different on raspberry pi with LexActivator for Java

yesterday you released a new version of LexActivator for Java which supports now Linux ARMv7 Raspberry PI. Native library now indeed present and API calls can be performed.
The only thing is that same license is not activating when code runs on ARMv7.
We run our software inside docker container and If I run it inside docker container on x86 or arm64 platform activation works perfectly, but on arm raspberry pi I got activation status 20 (translated to LexActivator.LA_EXPIRED) as response to call to LexActivator.ActivateLicense()
In dashboard I see that activations present for all 3 platforms for same license.
And I don’t see any difference in fields for those activations.
Can you help to find the problem ? is it problem with library ? or some other issue on arm platform ?

Here is the part of code which checks license and does activation:

LexActivator.SetProductId(productId, LexActivator.LA_USER)"using license ${licenseString}")
val tmpStatus = LexActivator.IsLicenseGenuine()"License IsLicenseGenuine return status ${tmpStatus}")
  if (tmpStatus == LexActivator.LA_OK) {
  } else {"License is not genuine, activating")
    val stat=LexActivator.ActivateLicense()"Activation status: ${stat}")

And logging output from different platforms:
running in docker on x86 linux:

{"timestamp":"2021-10-06 10:02:56.257","level":"INFO","message":"using license D2155E-5F70E8-4549BB-4EA757-9F40BF-16143C","context":"default","severity":"INFO"}
{"timestamp":"2021-10-06 10:02:56.257","level":"INFO","message":"License IsLicenseGenuine return status 1","context":"default","severity":"INFO"}
{"timestamp":"2021-10-06 10:02:56.258","level":"INFO","message":"License is not genuine, activating","context":"default","severity":"INFO"}
{"timestamp":"2021-10-06 10:02:57.529","level":"INFO","message":"Activation status: 0","context":"default","severity":"INFO"}

arm64 (running on docker on Amazon EC2 instance):

 {"timestamp":"2021-10-06 11:52:04.143","level":"INFO","message":"using license D2155E-5F70E8-4549BB-4EA757-9F40BF-16143C","context":"default","severity":"INFO"}
 {"timestamp":"2021-10-06 11:52:04.201","level":"INFO","message":"License IsLicenseGenuine return status 1","context":"default","severity":"INFO"}
 {"timestamp":"2021-10-06 11:52:04.201","level":"INFO","message":"License is not genuine, activating","context":"default","severity":"INFO"}
{"timestamp":"2021-10-06 11:52:04.642","level":"INFO","message":"Activation status: 0","context":"default","severity":"INFO"}

running on docker on armv7 raspberry pi:

{"timestamp":"2021-10-06 10:09:04.440","level":"INFO","message":"using license D2155E-5F70E8-4549BB-4EA757-9F40BF-16143C","context":"default","severity":"INFO"}
{"timestamp":"2021-10-06 10:09:05.132","level":"INFO","message":"License IsLicenseGenuine return status 1","context":"default","severity":"INFO"}
{"timestamp":"2021-10-06 10:09:05.133","level":"INFO","message":"License is not genuine, activating","context":"default","severity":"INFO"}
{"timestamp":"2021-10-06 10:09:07.920","level":"INFO","message":"Activation status: 20","context":"default","severity":"INFO"}

can it be some timing issue ? as I see that on raspberry pi activation takes more time, time difference between last two logging lines is almost 3 seconds. Any timeout settings that can be tuned ?

to clarify things license itself is active and not expired, not revoked and not suspended.
Also VM and container activations are enabled.

Hi Ramil,

This means that the time on your Raspberry machine is incorrect, it is in future. Hence the license appears expired locally.

I justed checked and enabled ntp service on raspberry pi.
So time should not be a problem.
Still have same activation error :frowning:

to simplify thing I created a simple demo app which does just license check and activation.

LexActivator.SetProductId(productId, LexActivator.LA_USER)
val licenseString = args(0)

println(s"${new Date()}: using license ${licenseString}")
val tmpStatus = LexActivator.IsLicenseGenuine()
println(s"${new Date()}: License IsLicenseGenuine return status ${tmpStatus}")
if (tmpStatus == LexActivator.LA_OK) {
} else {
  println(s"${new Date()}: License is not genuine, activating")
  val stat=LexActivator.ActivateLicense()
  println(s"${new Date()}: Activation status: ${stat}")

and run it as part of shell script:

java -cp path/to/all/jar/files test.CryptlexDemo D2155E-5F70E8-4549BB-4EA757-9F40BF-16143C

SO it prints date before after app and also timestamp during program executions.

And it perfectly run on x86 and fails with status 20 on raspberrypi:
on x86:

wo 06 okt 2021 15:42:38 CEST
Wed Oct 06 15:42:39 CEST 2021: using license D2155E-5F70E8-4549BB-4EA757-9F40BF-16143C
Wed Oct 06 15:42:39 CEST 2021: License IsLicenseGenuine return status 1
Wed Oct 06 15:42:39 CEST 2021: License is not genuine, activating
Wed Oct 06 15:42:40 CEST 2021: Activation status: 0
wo 06 okt 2021 15:42:40 CEST

and execution on raspberry pi:

Wed  6 Oct 15:41:05 CEST 2021
Wed Oct 06 15:41:07 CEST 2021: using license D2155E-5F70E8-4549BB-4EA757-9F40BF-16143C
Wed Oct 06 15:41:08 CEST 2021: License IsLicenseGenuine return status 20
Wed Oct 06 15:41:08 CEST 2021: License is not genuine, activating
Wed Oct 06 15:41:08 CEST 2021: Activation status: 20
Wed  6 Oct 15:41:08 CEST 2021

activations for both raspi and x86 are created on dashboard, it is just wrong status on raspberry pi

any debugging options are available ?

Yes, we can provide a build with some logging enabled. But first what is the status code when you activate the license?

The status code returned by LexActivator.activateLicense() is 20.

and once more, this happens only on raspberry pi armv7.
on other devices (linux PC x86_64, cloud vm instance arm64) LexActivator.activateLicense() returns 0.

I did further investigation.
I used 64-bit OS for raspberry pi on same device and believe it or not… It worked with 64-bit OS on raspberry pi: I got activation status 0 after call to LexActivator.activateLicense()

So looks like it is really issue with arm7v (32-bit) library used inside LexActivator for java.
Hope that helps…
If you can provide some debug build I can try it with 32-bit raspberry pi OS and see what’s happening during that call.

another round of tries.
Created different set of licenses and looks like problem is related to the license expiration date.
If I create license which expires far from today, eg. I have created 2 licenses that expire in 2049 and 2076 and then I got that activation status 20.
if I create license which expires in 1 year for example then activation status is 0 !
My original license was created with expiration at 2076.
And that only for armv7 platform, for arm64 anx x86_64 all licenses works just fine.
And looks like here you hit the 2038 year problem
License with expiration date in 2037 works.
License with expiration date in 2038 does not work !

I guess that explains the issue. By the year 2038 32 bit machines won’t be around most probably. So for now you just need to set a date less that 2038 or use validity as 0 for no expiry.

yeah, looks like we can live with that workaround for arm32 platform.
Thanks !