Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CoreELEC] Kodi freeze when stop the played video #728

Closed
CastagnaIT opened this issue Jul 4, 2021 · 28 comments
Closed

[CoreELEC] Kodi freeze when stop the played video #728

CastagnaIT opened this issue Jul 4, 2021 · 28 comments

Comments

@CastagnaIT
Copy link
Collaborator

This happen to me very rarely, on my CoreELEC matrix nightly (ARM)
and only after play/stopped a lot of videos, after about 6 or 10 videos depends, sometimes this problem not happen and all works good

When this problem happen, can happen these behaviours:

  1. At video stopped, kodi freeze, and after some minuts resolves itself and you can play again as usual
  2. At video stopped, kodi freeze, and after some minuts, kodi reboot itself
  3. At video stopped, kodi freeze, and you need to hard reboot the device

After tried a lot of times i have managed to restrict the field on the problem:
kodi.old.log.txt
kodi_crashlog_20210704080408.log.txt (same log but with coreleec crash report)

on first log file, line 9150 Session::DisposeDecrypter()
2021-07-04 08:02:05.088 T:5707 ERROR <general>: AddOnLog: inputstream.adaptive: Session::DisposeDecrypter(): ENTERED
is run and the code freeze inside this method, seem to always wait at cdm close session message,
then if cdm session close message:

  • arrive late, then happen behaviour 1
  • not arrive, then happen behaviour 2 or 3

you can see from the log that in this case Kodi is freezed 1 minute:

2021-07-04 08:03:05.484 T:5707 DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!

@fritsch
Copy link
Member

fritsch commented Jul 4, 2021

Looks like the CoreElec specific code tries to read / write to the sys fs most likely race when changing refreshrates, see:

2021-07-04 08:03:05.525 T:5105    DEBUG <general>: AMLUtils::aml_handle_display_stereo_mode old mode 3doff new mode 3doff
2021-07-04 08:03:05.525 T:5105    DEBUG <general>: AMLUtils::aml_handle_display_stereo_mode - no change needed
2021-07-04 08:03:05.525 T:5105    ERROR <general>: GetString: error reading /sys/class/amhdmitx/amhdmitx0/custom_mode

Sorry - this code is not in kodi at all anymore, please continue in the coreelec forum.

The error should go away when you plain disable AML in the settings, right?

@CastagnaIT
Copy link
Collaborator Author

can you explain me how to disable AML?

@CastagnaIT
Copy link
Collaborator Author

@vpeter4 sorry for ping you, have you some suggest?

@arthur-liberman
Copy link

arthur-liberman commented Jul 4, 2021

This particular AML related code was written a long time ago, I suppose, and there is no check to verify whether the sysfs exists at all before trying to read it. This is an optional or depricated sysfs entry that doesn't exist. It should not affect anything, or cause the above mentioned problem.
With that said, I don't think that the issue with Kodi freezing is related to ISA, it's most likely a CE related issue.

@vpeter4
Copy link

vpeter4 commented Jul 4, 2021

Because CoreELEC is using modified Kodi code it is not supported here. Try the addon on some supported platform (like LE on Raspberry Pi).

And fyi, on testing the solution with TLS alignment requirement on arm for libewidevine some of us noticed similar issue you describe. Sometimes we could play and stop a movie from Netflix for 100 times without a problem but sometimes some described problems happen. You could try some older CE release without TLS patch and using old libvidewine if there would be any difference (we didn't do that).

@CastagnaIT
Copy link
Collaborator Author

i have only this arm device to make tests
one day i will try to test by downgrading to old ce/wv release

@Portisch
Copy link
Contributor

Portisch commented Jul 5, 2021

This is a GDB debug log and it shows a memory error of the addon cause a freeze of kodi.bin.
The kodi.log shows clear the dispose of the session is already started but the CDM lib try to access the session after.
So this looks for me a threading/dispose issue.

2021-07-05 10:53:32.510 T:5949    DEBUG <general>: AddOnLog: inputstream.adaptive: Close()
2021-07-05 10:53:32.510 T:5949    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 10:53:32.656 T:5949    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!

When kodi does freeze the CDMMessage is not arriving anymore.

GDB log:

The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /usr/lib/kodi/kodi.bin --standalone -fs
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Program received signal SIGILL, Illegal instruction.
[New Thread 0xf1781280 (LWP 7213)]
[New Thread 0xecdff280 (LWP 7214)]
[Thread 0xecdff280 (LWP 7214) exited]
[New Thread 0xecdff280 (LWP 7215)]
[New Thread 0xec3ff280 (LWP 7216)]
[New Thread 0xeb894280 (LWP 7217)]
[New Thread 0xeaeff280 (LWP 7218)]
[New Thread 0xe64ff280 (LWP 7219)]
[Thread 0xe64ff280 (LWP 7219) exited]
[New Thread 0xe64ff280 (LWP 7220)]
[Thread 0xe64ff280 (LWP 7220) exited]
[New Thread 0xe64ff280 (LWP 7221)]
[New Thread 0xe5aff280 (LWP 7222)]
[Thread 0xe5aff280 (LWP 7222) exited]
[Thread 0xecdff280 (LWP 7215) exited]
[New Thread 0xecdff280 (LWP 7223)]
[New Thread 0xe5aff280 (LWP 7224)]
[Detaching after vfork from child process 7226]
[New Thread 0xea4ff280 (LWP 7233)]
[New Thread 0xe9cfe280 (LWP 7235)]
[New Thread 0xe94fd280 (LWP 7236)]
[New Thread 0xe8cfc280 (LWP 7237)]
[New Thread 0xe84fb280 (LWP 7239)]
[New Thread 0xe7cfa280 (LWP 7240)]
[New Thread 0xe74f9280 (LWP 7241)]
[New Thread 0xe10ff280 (LWP 7243)]
[Thread 0xe10ff280 (LWP 7243) exited]
[New Thread 0xe10ff280 (LWP 7245)]
[Thread 0xe10ff280 (LWP 7245) exited]
[New Thread 0xe10ff280 (LWP 7254)]
[New Thread 0xe08fe280 (LWP 7256)]
[Thread 0xe08fe280 (LWP 7256) exited]
[Thread 0xe10ff280 (LWP 7254) exited]
[New Thread 0xe10ff280 (LWP 7258)]
[Thread 0xe10ff280 (LWP 7258) exited]
[New Thread 0xe10ff280 (LWP 7259)]
[Thread 0xe10ff280 (LWP 7259) exited]
[New Thread 0xe10ff280 (LWP 7260)]
[Thread 0xe10ff280 (LWP 7260) exited]
[New Thread 0xe10ff280 (LWP 7261)]
[Thread 0xe10ff280 (LWP 7261) exited]
[New Thread 0xe10ff280 (LWP 7262)]
[Thread 0xe10ff280 (LWP 7262) exited]
[New Thread 0xe10ff280 (LWP 7263)]
[Thread 0xe10ff280 (LWP 7263) exited]
[New Thread 0xe10ff280 (LWP 7264)]
[Thread 0xe10ff280 (LWP 7264) exited]
[New Thread 0xe10ff280 (LWP 7265)]
[Thread 0xe10ff280 (LWP 7265) exited]
[New Thread 0xe10ff280 (LWP 7266)]
[Thread 0xe10ff280 (LWP 7266) exited]
[New Thread 0xe10ff280 (LWP 7267)]
[Thread 0xe10ff280 (LWP 7267) exited]
[New Thread 0xe10ff280 (LWP 7268)]
[New Thread 0xe08fe280 (LWP 7269)]
[Thread 0xe08fe280 (LWP 7269) exited]
[New Thread 0xe50ff280 (LWP 7270)]
[New Thread 0xe48fe280 (LWP 7271)]
[New Thread 0xe40fd280 (LWP 7272)]
[New Thread 0xe38fc280 (LWP 7273)]
[New Thread 0xe30fb280 (LWP 7274)]
[New Thread 0xe28fa280 (LWP 7275)]
[New Thread 0xe20f9280 (LWP 7276)]
[New Thread 0xe00fd280 (LWP 7277)]
[New Thread 0xdf8fc280 (LWP 7278)]
[New Thread 0xdf0fb280 (LWP 7279)]
[New Thread 0xde8fa280 (LWP 7280)]
[New Thread 0xde0f9280 (LWP 7281)]
[Detaching after vfork from child process 7282]
[New Thread 0xdd8f8280 (LWP 7283)]
[New Thread 0xdd0f7280 (LWP 7284)]
[Detaching after vfork from child process 7285]
[Detaching after vfork from child process 7286]
[New Thread 0xdc10c280 (LWP 7287)]
[New Thread 0xdb90b280 (LWP 7288)]
[New Thread 0xdb10a280 (LWP 7289)]
[New Thread 0xda909280 (LWP 7290)]
[New Thread 0xda108280 (LWP 7291)]
[New Thread 0xd910f280 (LWP 7292)]
[Detaching after fork from child process 7293]
[Detaching after fork from child process 7294]
[New Thread 0xd890e280 (LWP 7295)]
[Detaching after vfork from child process 7296]
[Detaching after vfork from child process 7297]
[Detaching after vfork from child process 7298]
[Detaching after fork from child process 7299]
[Detaching after fork from child process 7300]
[New Thread 0xd810d280 (LWP 7309)]
[Detaching after fork from child process 7310]
[Detaching after fork from child process 7311]
[Detaching after fork from child process 7320]
[Detaching after fork from child process 7321]
[New Thread 0xd790c280 (LWP 7322)]
[New Thread 0xd710b280 (LWP 7323)]
[New Thread 0xd690a280 (LWP 7324)]
[New Thread 0xd6109280 (LWP 7325)]
[Thread 0xd6109280 (LWP 7325) exited]
[New Thread 0xd6109280 (LWP 7327)]
[Thread 0xd6109280 (LWP 7327) exited]
[New Thread 0xd6109280 (LWP 7328)]
[Thread 0xd6109280 (LWP 7328) exited]
[New Thread 0xd6109280 (LWP 7329)]
[Thread 0xd6109280 (LWP 7329) exited]
[New Thread 0xd6109280 (LWP 7330)]
[Thread 0xd6109280 (LWP 7330) exited]
[New Thread 0xd6109280 (LWP 7331)]
[Thread 0xd6109280 (LWP 7331) exited]
[New Thread 0xd6109280 (LWP 7332)]
[Thread 0xd6109280 (LWP 7332) exited]
[New Thread 0xd6109280 (LWP 7333)]
[Thread 0xd6109280 (LWP 7333) exited]
[New Thread 0xd6109280 (LWP 7334)]
[Thread 0xd6109280 (LWP 7334) exited]
[New Thread 0xd6109280 (LWP 7335)]
[Thread 0xd6109280 (LWP 7335) exited]
[New Thread 0xd4926280 (LWP 7336)]
[New Thread 0xd4125280 (LWP 7337)]
[Detaching after fork from child process 7338]
[Thread 0xd4926280 (LWP 7336) exited]
[New Thread 0xd4926280 (LWP 7339)]
[Thread 0xd4926280 (LWP 7339) exited]
[New Thread 0xd6109280 (LWP 7340)]
[Thread 0xd6109280 (LWP 7340) exited]
[New Thread 0xd6109280 (LWP 7341)]
[Thread 0xd6109280 (LWP 7341) exited]
[New Thread 0xd6109280 (LWP 7342)]
[Thread 0xd6109280 (LWP 7342) exited]
[New Thread 0xd37ff280 (LWP 7343)]
[Thread 0xd37ff280 (LWP 7343) exited]
[New Thread 0xd4926280 (LWP 7344)]
[Thread 0xd4926280 (LWP 7344) exited]
[New Thread 0xd6109280 (LWP 7345)]
[Thread 0xd6109280 (LWP 7345) exited]
[New Thread 0xd6109280 (LWP 7346)]
[Thread 0xd6109280 (LWP 7346) exited]
[New Thread 0xd37ff280 (LWP 7347)]
[Thread 0xd37ff280 (LWP 7347) exited]
[New Thread 0xd4926280 (LWP 7348)]
[Detaching after vfork from child process 7349]
[Thread 0xd4926280 (LWP 7348) exited]
[New Thread 0xd6109280 (LWP 7350)]
[Thread 0xd6109280 (LWP 7350) exited]
[New Thread 0xd6109280 (LWP 7351)]
[Thread 0xd6109280 (LWP 7351) exited]
[New Thread 0xd37ff280 (LWP 7352)]
[Detaching after fork from child process 7353]
[Detaching after fork from child process 7354]
[New Thread 0xd2ffe280 (LWP 7359)]
[Thread 0xd37ff280 (LWP 7352) exited]
[New Thread 0xd37ff280 (LWP 7360)]
[New Thread 0xd4926280 (LWP 7361)]
[Thread 0xd4926280 (LWP 7361) exited]
[New Thread 0xd14ff280 (LWP 7362)]
BFD: /storage/.kodi/cdm/libwidevinecdm.so: unknown type [0x13] section `.relr.dyn'
warning: `/storage/.kodi/cdm/libwidevinecdm.so': Shared library architecture unknown is not compatible with target architecture armv8-a.
[Detaching after vfork from child process 7403]
[New Thread 0xcd573280 (LWP 7404)]
[New Thread 0xccd72280 (LWP 7405)]
[Thread 0xcd573280 (LWP 7404) exited]
[New Thread 0xcd573280 (LWP 7406)]
[Thread 0xccd72280 (LWP 7405) exited]
[New Thread 0xccd72280 (LWP 7409)]
[Thread 0xcd573280 (LWP 7406) exited]
[New Thread 0xcd573280 (LWP 7410)]
[Detaching after vfork from child process 7411]
[New Thread 0xcc571280 (LWP 7412)]
[New Thread 0xcbd70280 (LWP 7413)]
[New Thread 0xcb56f280 (LWP 7414)]
[New Thread 0xcad6e280 (LWP 7415)]
[New Thread 0xca56d280 (LWP 7416)]
[New Thread 0xc9d6c280 (LWP 7417)]
[Thread 0xccd72280 (LWP 7409) exited]
[New Thread 0xccd72280 (LWP 7419)]
[Thread 0xccd72280 (LWP 7419) exited]
[New Thread 0xccd72280 (LWP 7420)]
[Thread 0xccd72280 (LWP 7420) exited]
[New Thread 0xccd72280 (LWP 7421)]
[Thread 0xc9d6c280 (LWP 7417) exited]
[New Thread 0xc9d6c280 (LWP 7422)]
[Thread 0xccd72280 (LWP 7421) exited]
[New Thread 0xd6109280 (LWP 7423)]
[Thread 0xcad6e280 (LWP 7415) exited]
[Thread 0xca56d280 (LWP 7416) exited]
[Thread 0xcd573280 (LWP 7410) exited]
[Thread 0xcb56f280 (LWP 7414) exited]
[Thread 0xd6109280 (LWP 7423) exited]
/usr/lib/kodi/kodi.bin: symbol lookup error: /storage/.kodi/addons/inputstream.adaptive/libssd_wv.so: undefined symbol: _ZN5media10CdmAdapterD1Ev
[Thread 0xdf8fc280 (LWP 7278) exited]
[Thread 0xd14ff280 (LWP 7362) exited]
[Thread 0xc9d6c280 (LWP 7422) exited]
[Thread 0xd890e280 (LWP 7295) exited]
[Thread 0xcc571280 (LWP 7412) exited]
[Thread 0xdb10a280 (LWP 7289) exited]
[Thread 0xdd0f7280 (LWP 7284) exited]
[Thread 0xe8cfc280 (LWP 7237) exited]
[Thread 0xd2ffe280 (LWP 7359) exited]
[Thread 0xeb894280 (LWP 7217) exited]
[Thread 0xe64ff280 (LWP 7221) exited]
[Thread 0xd4125280 (LWP 7337) exited]
[Thread 0xe30fb280 (LWP 7274) exited]
[Thread 0xe84fb280 (LWP 7239) exited]
[Thread 0xdb90b280 (LWP 7288) exited]
[Thread 0xdd8f8280 (LWP 7283) exited]
[Thread 0xe40fd280 (LWP 7272) exited]
[Thread 0xe20f9280 (LWP 7276) exited]
[Thread 0xf1781280 (LWP 7213) exited]
[Thread 0xe50ff280 (LWP 7270) exited]
[Thread 0xd710b280 (LWP 7323) exited]
[Thread 0xde8fa280 (LWP 7280) exited]
[Thread 0xe7cfa280 (LWP 7240) exited]
[Thread 0xeaeff280 (LWP 7218) exited]
[Thread 0xea4ff280 (LWP 7233) exited]
[Thread 0xe48fe280 (LWP 7271) exited]
[Thread 0xdc10c280 (LWP 7287) exited]
[Thread 0xe74f9280 (LWP 7241) exited]
[Thread 0xd810d280 (LWP 7309) exited]
[Thread 0xd790c280 (LWP 7322) exited]
[Thread 0xe5aff280 (LWP 7224) exited]
[Thread 0xe10ff280 (LWP 7268) exited]
[Thread 0xd910f280 (LWP 7292) exited]
[Thread 0xe9cfe280 (LWP 7235) exited]
[Thread 0xecdff280 (LWP 7223) exited]
[Thread 0xda108280 (LWP 7291) exited]
[Thread 0xcbd70280 (LWP 7413) exited]
[Thread 0xda909280 (LWP 7290) exited]
[Thread 0xd690a280 (LWP 7324) exited]
[Thread 0xde0f9280 (LWP 7281) exited]
[Thread 0xe00fd280 (LWP 7277) exited]
[Thread 0xec3ff280 (LWP 7216) exited]
[Thread 0xe28fa280 (LWP 7275) exited]
[Thread 0xe94fd280 (LWP 7236) exited]
[Thread 0xe38fc280 (LWP 7273) exited]
[Thread 0xf1782040 (LWP 7212) exited]
[Thread 0xdf0fb280 (LWP 7279) exited]
Cannot access memory at address 0xf74905c0

@CastagnaIT
Copy link
Collaborator Author

CastagnaIT commented Jul 5, 2021

yes could be
from my last test the code seem stuck here when execute method DisposeSampleDecrypter:
https://github.com/xbmc/inputstream.adaptive/blob/2.6.17-Matrix/src/main.cpp#L2197

@glennguy
Copy link
Contributor

glennguy commented Jul 5, 2021

Maybe something to do with the changes in #589 ?

@CastagnaIT
Copy link
Collaborator Author

CastagnaIT commented Jul 5, 2021

This is a bit strange (from #589):

https://github.com/xbmc/inputstream.adaptive/blob/2.6.17-Matrix/wvdecrypter/cdm/media/cdm/cdm_adapter.cc#L146-L149

IMO there should be no blocking of the thread when it will be disposed,
shouldn't the running thread be terminated instead?

@Portisch
Copy link
Contributor

Portisch commented Jul 5, 2021

You need to get sure the session is still active and accessible until this CDM message arrived.
Otherwise the function callback goes into nirvana. That's what I think is the cause of this issue, but I am maybe wrong.
I looked at the source and it's way to complicated that I can make a more detailed analysis, sorry.

Also I have no idea about the exported function:
libssd_wv.so: undefined symbol: _ZN5media10CdmAdapterD1Ev
Maybe the reason it's not found anymore is that the session is already be disposed but the addon or the CDM lib still try to access it.

I can hit this error sometimes on first attempt, sometimes after 10 or 15 times. "Best" results I got with Amazon VOD + the movie Bliss. Just start, play 1-2 seconds and hit "x" on keyboard to stop playback.

@glennguy
Copy link
Contributor

glennguy commented Jul 5, 2021

The original purpose of 589 was just for YouTube movies but I think now since a more recent cdm update the license renewal is used by a lot more by default. @matthuisman I remember you mentioning something about this, can you jump in?

If you examine the PR thread the code for licenserenewal always existed (commented out the function call) but enabling it would cause crash on stop video. Additional changes were introduced to mitigate the crash but from the looks of it a more proper solution may be needed.

@Portisch
Copy link
Contributor

Portisch commented Jul 5, 2021

I got some more time and this "hack" does fix it. It is not solved properly and it's not finished. It's just to show a difference and it make a proof of concept that the dispose of the session cause this issue. I tried it now 35 times without any kodi freeze. I never got so far, but maybe I was just lucky.

The timer loop sleep_for needs to be replaced by the CDMMessage: 4 arrived as this is platform dependent.
So the way to solve it is to close the active session by CloseSession before the class WV_CencSingleSampleDecrypter get disposed. Then it needs to wait for the CDMMessage 4 and afterwards the session can be disposed.

So here:
https://github.com/xbmc/inputstream.adaptive/blob/Matrix/wvdecrypter/wvdecrypter.cpp#L390
an additional if (msg == CDMADPMSG::kSessionClosed) is needed to trigger the dispose of the decrypter class.

Edit:
I will try tomorrow to change the sleep to a timeout what can be cancelled by the CDMMessage.

diff --git a/lib/libbento4/Core/Ap4CommonEncryption.h b/lib/libbento4/Core/Ap4CommonEncryption.h
index 042ac04..3a81ab2 100644
--- a/lib/libbento4/Core/Ap4CommonEncryption.h
+++ b/lib/libbento4/Core/Ap4CommonEncryption.h
@@ -523,6 +523,7 @@ public:
     virtual AP4_UI32 AddPool() { return 0; };
     virtual void RemovePool(AP4_UI32 poolid) {};
     virtual const char* GetSessionId() { return NULL; };
+    virtual void CloseSessionId() {};
 
     virtual AP4_Result DecryptSampleData(AP4_UI32 poolid, 
                                          AP4_DataBuffer& data_in,
diff --git a/wvdecrypter/wvdecrypter.cpp b/wvdecrypter/wvdecrypter.cpp
index b3f37fa..3ed2b1b 100644
--- a/wvdecrypter/wvdecrypter.cpp
+++ b/wvdecrypter/wvdecrypter.cpp
@@ -174,6 +174,7 @@ public:
 
   void GetCapabilities(const uint8_t* key, uint32_t media, SSD_DECRYPTER::SSD_CAPS &caps);
   virtual const char *GetSessionId() override;
+  virtual void CloseSessionId() override;
   void SetSession(const char* session, uint32_t session_size, const uint8_t *data, size_t data_size)
   {
     std::lock_guard<std::mutex> lock(renewal_lock_);
@@ -477,8 +478,7 @@ WV_CencSingleSampleDecrypter::WV_CencSingleSampleDecrypter(WV_DRM &drm, AP4_Data
   if (keys_.empty())
   {
     Log(SSD_HOST::LL_ERROR, "License update not successful (no keys)");
-    drm_.GetCdmAdapter()->CloseSession(++promise_id_, session_.data(), session_.size());
-    session_.clear();
+    CloseSessionId();
     return;
   }
   Log(SSD_HOST::LL_DEBUG, "License update successful");
@@ -487,7 +487,7 @@ WV_CencSingleSampleDecrypter::WV_CencSingleSampleDecrypter(WV_DRM &drm, AP4_Data
 WV_CencSingleSampleDecrypter::~WV_CencSingleSampleDecrypter()
 {
   if (!session_.empty())
-    drm_.GetCdmAdapter()->CloseSession(++promise_id_, session_.data(), session_.size());
+    CloseSessionId();
   drm_.removessd(this);
   free(subsample_buffer_decrypt_);
   free(subsample_buffer_video_);
@@ -573,6 +573,27 @@ const char *WV_CencSingleSampleDecrypter::GetSessionId()
   return session_.empty()? nullptr : session_.c_str();
 }
 
+void WV_CencSingleSampleDecrypter::CloseSessionId()
+{
+  Log(SSD_HOST::LL_DEBUG, "%s: enter", __func__);
+
+  if (!session_.empty())
+  {
+    Log(SSD_HOST::LL_DEBUG, "%s: CloseSessionId: %s", __func__, session_.c_str());
+    drm_.GetCdmAdapter()->CloseSession(++promise_id_, session_.data(), session_.size());
+    session_.clear();
+  }
+
+  int i = 0;
+  while (i < 10)
+  {
+    i++;
+    std::this_thread::sleep_for(std::chrono::milliseconds(100));
+  }
+
+  Log(SSD_HOST::LL_DEBUG, "%s: leave", __func__);
+}
+
 void WV_CencSingleSampleDecrypter::CheckLicenseRenewal()
 {
   {
@@ -1418,7 +1439,10 @@ public:
   virtual void DestroySingleSampleDecrypter(AP4_CencSingleSampleDecrypter* decrypter) override
   {
     if (decrypter)
+    {
+      decrypter->CloseSessionId();
       delete static_cast<WV_CencSingleSampleDecrypter*>(decrypter);
+    }
   }
 
   virtual void GetCapabilities(AP4_CencSingleSampleDecrypter* decrypter, const uint8_t *keyid, uint32_t media, SSD_DECRYPTER::SSD_CAPS &caps) override

Filtered log:

2021-07-05 13:39:35.176 T:6185    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:39:35.176 T:6185    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:39:48.839 T:6185    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:39:48.841 T:6185    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:39:48.841 T:6185    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 2BEB00AA5547649D894F7A900D4E4449
2021-07-05 13:39:48.886 T:6185    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:39:49.921 T:6185    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:39:49.983 T:6185    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:40:45.150 T:6260    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:40:45.150 T:6260    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:40:57.018 T:6260    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:40:57.019 T:6260    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:40:57.019 T:6260    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 01B3C991936EEC8E85A263DFA9B77F5C
2021-07-05 13:40:57.162 T:6260    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:40:58.196 T:6260    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:40:58.257 T:6260    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:41:00.663 T:6293    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:41:00.663 T:6293    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:41:11.751 T:6293    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:41:11.751 T:6293    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:41:11.751 T:6293    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 920B48241B205DF2F5998B4CC746563A
2021-07-05 13:41:11.795 T:6293    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:41:12.831 T:6293    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:41:12.892 T:6293    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:41:17.946 T:6398    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:41:17.946 T:6398    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:41:28.730 T:6398    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:41:28.730 T:6398    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:41:28.730 T:6398    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: AAB10AF68DA2315088D56CED1D4029EB
2021-07-05 13:41:28.774 T:6398    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:41:29.808 T:6398    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:41:29.870 T:6398    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:41:32.244 T:6540    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:41:32.244 T:6540    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:41:43.348 T:6540    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:41:43.348 T:6540    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:41:43.348 T:6540    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 5681BDBE0C00F230F5594A12A470AA6A
2021-07-05 13:41:43.491 T:6540    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:41:44.528 T:6540    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:41:44.589 T:6540    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:41:49.547 T:6675    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:41:49.547 T:6675    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:42:00.552 T:6675    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:42:00.553 T:6675    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:42:00.553 T:6675    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: DF6B300493231238B5339C07859B2415
2021-07-05 13:42:00.696 T:6675    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:42:01.734 T:6675    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:42:01.800 T:6675    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:42:04.311 T:6837    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:42:04.311 T:6837    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:42:15.310 T:6837    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:42:15.310 T:6837    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:42:15.310 T:6837    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 500A268E2A07FD7376A75E65D3261794
2021-07-05 13:42:15.454 T:6837    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:42:16.491 T:6837    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:42:16.554 T:6837    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:42:21.312 T:6894    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:42:21.312 T:6894    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:42:32.729 T:6894    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:42:32.730 T:6894    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:42:32.730 T:6894    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 9856B2D5BF8098028B452029F6152AD5
2021-07-05 13:42:32.774 T:6894    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:42:33.811 T:6894    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:42:33.875 T:6894    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:42:36.543 T:6923    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:42:36.543 T:6923    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:42:47.487 T:6923    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:42:47.488 T:6923    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:42:47.488 T:6923    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 41D88B9FDAC85A6506A93C1DF5F0C397
2021-07-05 13:42:51.833 T:6923    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:42:52.866 T:6923    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:42:52.932 T:6923    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:43:00.736 T:6972    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:43:00.736 T:6972    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:43:11.889 T:6972    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:43:11.889 T:6972    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:43:11.889 T:6972    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 49907A0CF7685A002BE52CBE89EFA7B0
2021-07-05 13:43:12.034 T:6972    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:43:13.069 T:6972    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:43:13.131 T:6972    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:43:17.836 T:7066    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:43:17.836 T:7066    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:43:28.753 T:7066    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:43:28.753 T:7066    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:43:28.753 T:7066    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 36B7AC03E62D8767525FEBC2C32A52C4
2021-07-05 13:43:28.898 T:7066    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:43:29.936 T:7066    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:43:29.998 T:7066    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:43:32.569 T:7095    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:43:32.569 T:7095    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:43:43.103 T:7095    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:43:43.103 T:7095    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:43:43.103 T:7095    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 7EF2A49AE5DC5FE27BCF3453E5E3C04A
2021-07-05 13:43:43.248 T:7095    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:43:44.284 T:7095    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:43:44.346 T:7095    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:43:46.833 T:7123    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:43:46.833 T:7123    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:43:57.838 T:7123    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:43:57.838 T:7123    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:43:57.838 T:7123    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: BC107638C37D83501308B80F0291358A
2021-07-05 13:43:57.983 T:7123    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:43:59.019 T:7123    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:43:59.081 T:7123    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:44:03.988 T:7156    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:44:03.988 T:7156    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:44:14.875 T:7156    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:44:14.876 T:7156    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:44:14.876 T:7156    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: D626F0622E9B387CD84B965744E0EA9F
2021-07-05 13:44:15.020 T:7156    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:44:16.058 T:7156    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:44:16.122 T:7156    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:44:23.824 T:7185    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:44:23.824 T:7185    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:44:34.656 T:7185    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:44:34.657 T:7185    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:44:34.657 T:7185    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: AEB1168315FE150E92E65B13C731AA9D
2021-07-05 13:44:34.702 T:7185    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:44:35.740 T:7185    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:44:35.802 T:7185    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:44:38.156 T:7213    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:44:38.157 T:7213    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:44:49.104 T:7213    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:44:49.105 T:7213    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:44:49.105 T:7213    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 602702797ECE14AC2FD11C7D72599141
2021-07-05 13:44:49.250 T:7213    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:44:50.286 T:7213    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:44:50.350 T:7213    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:44:52.571 T:7242    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:44:52.571 T:7242    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:45:04.142 T:7242    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:45:04.142 T:7242    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:45:04.142 T:7242    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 00BBFCD18C5D161D26EEBD24B2BFD44C
2021-07-05 13:45:04.288 T:7242    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:45:05.325 T:7242    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:45:05.389 T:7242    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:45:09.954 T:7275    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:45:09.954 T:7275    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:45:20.956 T:7275    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:45:20.957 T:7275    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:45:20.957 T:7275    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: A026C0B34CD61B053D83DC95C0A3BD11
2021-07-05 13:45:32.708 T:7275    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:45:33.741 T:7275    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:45:33.805 T:7275    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:45:37.349 T:7319    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:45:37.349 T:7319    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:45:48.951 T:7319    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:45:48.951 T:7319    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:45:48.951 T:7319    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: 66E182CACAA9E9DA541484084FC3F734
2021-07-05 13:45:49.096 T:7319    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:45:50.133 T:7319    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:45:50.195 T:7319    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:46:02.509 T:7365    DEBUG <general>: SECTION:LoadDLL(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)
2021-07-05 13:46:02.509 T:7365    DEBUG <general>: Loading: /storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17
2021-07-05 13:46:13.502 T:7365    DEBUG <general>: AddOnLog: inputstream.adaptive: Session::~Session()
2021-07-05 13:46:13.502 T:7365    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: enter
2021-07-05 13:46:13.502 T:7365    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: CloseSessionId: E1352F2BB9451F26C00FEE9F5310A498
2021-07-05 13:46:13.647 T:7365    DEBUG <general>: AddOnLog: inputstream.adaptive: CDMMessage: 4 arrived!
2021-07-05 13:46:14.687 T:7365    DEBUG <general>: AddOnLog: inputstream.adaptive: CloseSessionId: leave
2021-07-05 13:46:14.749 T:7365    DEBUG <general>: SECTION:UnloadDll(/storage/.kodi/addons/inputstream.adaptive/inputstream.adaptive.so.2.6.17)

@matthuisman
Copy link
Contributor

@glennguy
Yes, since latest widevine version - it appears more services are now requiring a license refresh.
Otherwise playback will stop after x mins.

@Portisch
Copy link
Contributor

Portisch commented Jul 6, 2021

😕 it looks like still freezing sometimes. It does happen when the CDMMessage 4 on CloseSession does not arrive.
So it may a lock in the CDM lib itself.

Edit:
Maybe I found an "second" part cause this issue. Did now 40 times start/stop cycle without crash/freeze.
inputstream.adaptive-2.6.17.2.zip

Edit 2:
Yes, it looks solved now. 145 cycles, no kodi freeze or crash - and surprise: it's NOT a CoreELEC issue... 😒
Maybe people should look first the source before give the responsibility to others...

Here the addon for Netflix users with PR725 included:
. removed .
the PR725 does make it more unstable again and do lead to kodi crash, at least with Amazon VOD

@matthuisman
Copy link
Contributor

matthuisman commented Jul 6, 2021

@Portisch
where is the PR to fix it?
PR #725 seems unrelated.... ??

@betatester3016
Copy link

betatester3016 commented Jul 7, 2021

I ran a play / resume / stop script stress test on an Amlogic SoC S905X3 64/4 1gbit device running a clean installation of CoreELEC 19.2 Matrix RC2 from µSD Card, with following add-ons: CastagneIT's Netflix version 1.16.1+matrix.1 and the 2.6.17.2-pr725 edition of IS.A provided in this issue.

Netflix plan: standard
Widevine version: 4.10.2252.0 (FIEVEL 13904.55.0)

These are my findings:

script started at: 18:06
Netflix test stream: Alita: Battle Angel (1080)
script ended at: 19:28
reason script ended: ended by tester
total completed play/resume/stop cycles: 210
total crashes: 0
total freezes: 0

This Kodi log from the test device is available for review and study.

Be advised the log will auto destruct one month from date of posting.

@CastagnaIT
Copy link
Collaborator Author

I would like to understand what happened
may be wrong as I am not a C++ expert in my PR 725 i do not seem to have introduced any particular code
however my new PR it is not currently used by any addon

@vascobraga41
Copy link

The ISA provided are for testing purposes, the one with the PR725 included was added to allow users trying in Netflix to have 1080p. The fix is not related to PR725. Once confirmed working well (as it seems) a PR can be created.

@CastagnaIT
Copy link
Collaborator Author

CastagnaIT commented Jul 7, 2021

the PR725 does make it more unstable again and do lead to kodi crash, at least with Amazon VOD

i think the PR725 code speak itself
https://github.com/xbmc/inputstream.adaptive/pull/725/files#diff-34d21af3c614ea3cee120df276c9c4ae95053830d7f1d3deaf009a4625409ad2R2230
the code is used only when an addon provide PSSH/KID via ListItem property
Amazon VOD do not use it
then the original ISA behaviour is kept unchanged

the only thing different is here:
https://github.com/xbmc/inputstream.adaptive/pull/725/files#diff-cb49b4f5a6e2a38d51a696be771430404f8a6c7f7012b92d5d27da461825f790R468-R472
where i have added the bool isSessionDataObtained to be safe that all data is stored

@vascobraga41
Copy link

@CastagnaIT further tests indicated that also freeze in amazon is gone and the PR was submitted, it's #729 . So #725 and #729 merges would fix known problems. Been running an ISA with both PR's in the last two days.

@CastagnaIT
Copy link
Collaborator Author

thanks i have just tried to play about 20 videos without problems with 729 with combined an improved 725

@glennguy
Copy link
Contributor

Fixed in #729

@mrfixit2001
Copy link

mrfixit2001 commented Oct 25, 2021

@glennguy @Portisch I have custom built Kodi for a Rockchip Rk3328 device and am seeing this similar error... here's relevant excepts from the kodi log an gdb trace.

I have to assume the issue is the version of widevine that got auto installed? The CPU is armv8, and the build is using a 64-bit kernel, but the userspace and kodi binary are compiled for 32-bit. Maybe I need to patch the inputstream helper to download a different widevine?

Any and all feedback is greatly appreciated!

INFO : CAddonMgr::FindAddons: inputstream.adaptive v19.0.0 installed
INFO : CAddonMgr::FindAddons: plugin.video.netflix v1.18.0+matrix.1 installed

2021-10-24 20:54:40.354 T:3137    DEBUG <CAddonSettings[script.module.inputstreamhelper]>: trying to load setting definitions from old format...
2021-10-24 20:54:40.355 T:3137    DEBUG <CSettingsManager>: requested setting (label11) was not found.
2021-10-24 20:54:40.355 T:3137    DEBUG <CSettingsManager>: requested setting (label6) was not found.
2021-10-24 20:54:40.356 T:3137    DEBUG <general>: [script.module.inputstreamhelper] Found system architecture arm64
2021-10-24 20:54:40.395 T:3137    DEBUG <general>: [script.module.inputstreamhelper] inputstream.adaptive is installed.
2021-10-24 20:54:40.397 T:3137    DEBUG <general>: [script.module.inputstreamhelper] inputstream.adaptive 19.0.0 is enabled.
2021-10-24 20:54:40.397 T:3137    DEBUG <general>: [script.module.inputstreamhelper] inputstream.adaptive 19.0.0 is installed and enabled.
2021-10-24 20:54:40.404 T:3137    DEBUG <general>: [script.module.inputstreamhelper] Found Widevine CDM at /home/share//.kodi/cdm/libwidevinecdm.so
2021-10-24 20:54:40.443 T:3137    FATAL <general>: [script.module.inputstreamhelper] Failed to check for missing Widevine libraries.
2021-10-24 20:54:40.445 T:3137  WARNING <general>: [script.module.inputstreamhelper] Widevine update check was made on 2021-10-23 09:33
2021-10-24 20:54:40.447 T:3137     INFO <general>: CPythonInvoker(8, /home/share//.kodi/addons/plugin.video.netflix/addon.py): script successfully run

2021-10-24 20:54:40.496 T:3081     INFO <general>: VideoPlayer::OpenFile: plugin://plugin.video.netflix/play/show/80241318/season/81441891/episode/81473836/?profile_guid=<REMOVED FOR SECURITY>
2021-10-24 20:54:40.497 T:3251    DEBUG <general>: Thread VideoPlayer start, auto delete: false
2021-10-24 20:54:40.497 T:3081    DEBUG <general>: OnPlayBackStarted: CApplication::OnPlayBackStarted
2021-10-24 20:54:40.498 T:3251     INFO <general>: Creating InputStream
2021-10-24 20:54:40.499 T:3251    DEBUG <general>: ADDON: Dll Initializing - InputStream Adaptive
2021-10-24 20:54:40.499 T:3251    DEBUG <general>: SECTION:LoadDLL(/usr/lib/kodi/addons/inputstream.adaptive/inputstream.adaptive.so.19.0.0)
2021-10-24 20:54:40.499 T:3251    DEBUG <general>: Loading: /usr/lib/kodi/addons/inputstream.adaptive/inputstream.adaptive.so.19.0.0
2021-10-24 20:54:40.506 T:3199    DEBUG <general>: Loading settings for plugin://plugin.video.netflix/play/show/80241318/season/81441891/episode/81473836/?profile_guid=<REMOVED FOR SECURITY>
2021-10-24 20:54:40.818 T:3251     INFO <general>: AddOnLog: inputstream.adaptive: SetVideoResolution (1920 x 1080)
2021-10-24 20:54:40.818 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: Open()
2021-10-24 20:54:40.818 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: found inputstream.adaptive.license_key: [not shown]
2021-10-24 20:54:40.818 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: found inputstream.adaptive.license_type: com.widevine.alpha
2021-10-24 20:54:40.818 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: found inputstream.adaptive.manifest_type: mpd
2021-10-24 20:54:40.818 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: found inputstream.adaptive.pre_init_data: [not shown]
2021-10-24 20:54:40.818 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: found inputstream.adaptive.server_certificate: [not shown]
2021-10-24 20:54:40.818 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: found inputstream.adaptive.stream_headers: user-agent=Mozilla/5.0 (X11; CrOS armv7l 13099.110.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.136 Safari/537.36
2021-10-24 20:54:40.819 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: Initial bandwidth: 4000000 
2021-10-24 20:54:40.821 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: MAXRESOLUTION selected: 0 
2021-10-24 20:54:40.821 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: MAXRESOLUTIONSECURE selected: 0 
2021-10-24 20:54:40.821 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: STREAMSELECTION selected: 0 
2021-10-24 20:54:40.821 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: FORCENONSECUREDECODER selected: 0 
2021-10-24 20:54:40.821 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: Searching for decrypters in: /usr/lib/kodi/addons/inputstream.adaptive/
2021-10-24 20:54:41.020 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: Found decrypter: /usr/lib/kodi/addons/inputstream.adaptive/libssd_wv.so
2021-10-24 20:54:41.020 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: Supported URN: urn:uuid:EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED
2021-10-24 20:54:41.020 T:3251    DEBUG <general>: AddOnLog: inputstream.adaptive: PreInitializeDRM - Entering encryption section



BFD: /home/share//.kodi/cdm/libwidevinecdm.so: unknown type [0x13] section .relr.dyn
warning: /home/share//.kodi/cdm/libwidevinecdm.so: Shared library architecture unknown is not compatible with target architecture armv8-a.


Thread 160 "VideoPlayer" received signal SIGILL, Illegal instruction.

Thread 160 (Thread 0xd3a1d330 (LWP 3251)):
#0  0x003fe3ae in ?? ()
#1  0xf77cd8b4 in call_init () from /lib/ld-linux-armhf.so.3
#2  0xf77cd9b4 in _dl_init () from /lib/ld-linux-armhf.so.3
#3  0xf4a24bac in _dl_catch_exception () from /lib/libc.so.6
#4  0xf77d1c90 in dl_open_worker () from /lib/ld-linux-armhf.so.3
#5  0xf4a24b68 in _dl_catch_exception () from /lib/libc.so.6
#6  0xf77d148c in _dl_open () from /lib/ld-linux-armhf.so.3
#7  0xf7060b3c in ?? () from /lib/libdl.so.2```

@mrfixit2001
Copy link

Update - looks like my original commit to inputstream helper was lost over time :( I'll submit it... again...
emilsvennesson/script.module.inputstreamhelper@1984649

@mrfixit2001
Copy link

Another update: unfortunately I've been unable to get this to work. Everything I've tried has come up with the exact same errors as I listed above. @Portisch @glennguy would greatly appreciate ideas and thoughts on what to try.

Some initial questions.... does the kernel now require relocation enabled in order to support widevine? The relr.dyn assembly part of the kernel gets adjusted when relocation is enabled (it's off in my build).

I've tried manually implementing 3 different compatible widevine builds from this list, all return the same errors I put above:
https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices

I know this is a closed issue, but even if widevine doesn't load I assume the intent is not to completely crash kodi, so this bug technically still exists in some form and should probably be re-opened.

@matthuisman
Copy link
Contributor

matthuisman commented Oct 25, 2021

I have custom built Kodi for a Rockchip Rk3328

"custom built" != official Kodi - so don't expect the same levels of support.
Custom builds will often need custom fixes / workarounds

Please stop tagging devs and bumping old issues.
You'll need to go do some work and look at what other platforms have done to support the latest widevine
Start here: #678

Good luck!

@mrfixit2001
Copy link

mrfixit2001 commented Oct 25, 2021 via email

dobo90 pushed a commit to dobo90/inputstream.adaptive that referenced this issue Feb 14, 2023
…hile CloseSession is active to avoid endless loop.

Sometimes when stopping a playback Kodi crashes with a following backtrace:

    (__m=<optimized out>, this=<optimized out>)
    at /usr/include/c++/12.1.0/bits/atomic_base.h:486
        __b = <optimized out>
    at /usr/include/c++/12.1.0/atomic:87
    (adp=std::shared_ptr<media::CdmAdapter> (use count 1, weak count 1) = {...}, delay=<optimized out>, context=<optimized out>)
    at /usr/src/debug/kodi-addon-inputstream-adaptive/inputstream.adaptive-20.3.3-Nexus/wvdecrypter/cdm/media/cdm/cdm_adapter.cc:81
    at /usr/include/c++/12.1.0/bits/invoke.h:96, unsigned long long, void*), std::shared_ptr<media::CdmAdapter>, long long, void*> >::_M_invoke<0u, 1u, 2u, 3u>(std::_Index_tuple<0u, 1u, 2u, 3u>)
    (this=<optimized out>) at /usr/include/c++/12.1.0/bits/std_thread.h:252
    at /usr/include/c++/12.1.0/bits/std_thread.h:259
    at /usr/include/c++/12.1.0/bits/std_thread.h:210
    at /usr/src/debug/gcc/libstdc++-v3/src/c++11/thread.cc:82
        ret = <optimized out>
        pd = 0x85cf9080
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {857629366, 66004830, -2049994624, -2008033272, -2008033282, 338, -2008033281, 8387456, -2058383360, -2049995908, 1920, 1080, 3840, 2160, 0, 10000000, -1431355392, 1107558643, 0 <repeats 46 times>}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        robust = <optimized out>

After searching in the github history it came out that there was a
similar issue adressed in xbmc#728.

For some reason that piece of code got removed in
xbmc@8889fe9
(in pull request xbmc#883).

The stack trace is from the Raspberry Pi 4 machine. But I can also reproduce the issue
on my x86_64 Linux machine by adding a 1s sleep in the beginning of CdmAdapter::SetTimer.

In order to reproduce it is necessary to quickly play/stop streams.
Script attached at the end of the commit message can be used to ease the reproduction.
In my environment running the script for 1-3 minutes makes Kodi crash.
Although the root cause described in xbmc#729
was a busy loop. Right now address sanitizer reports:
```
AddressSanitizer:DEADLYSIGNAL
=================================================================
==108079==ERROR: AddressSanitizer: SEGV on unknown address 0x7f6e314f7d4a (pc 0x7f6e314f7d4a bp 0x7f6e263fd830 sp 0x7f6e263fd720 T464)
==108079==The signal is caused by a READ memory access.
==108079==Hint: PC is at a non-executable region. Maybe a wild jump?
    #0 0x7f6e314f7d4a  (<unknown module>)
    xbmc#1 0x7f6e3151c066  (<unknown module>)
    xbmc#2 0x7f6e31526947  (<unknown module>)
    xbmc#3 0x7f6e31526729  (<unknown module>)
    xbmc#4 0x7f6e31526620  (<unknown module>)
    xbmc#5 0x7f6e315265a1  (<unknown module>)
    xbmc#6 0x7f6e31526585  (<unknown module>)
    xbmc#7 0x7f6e46ed72c2 in execute_native_thread_routine /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:82

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (<unknown module>)
Thread T464 created by T51 here:
    #0 0x7f6e49464207 in __interceptor_pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:207
    xbmc#1 0x7f6e46ed73a9 in __gthread_create /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:663
    xbmc#2 0x7f6e46ed73a9 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:147
    xbmc#3 0x7f6e31522028  (<unknown module>)
    xbmc#4 0x7f6e27569d40  (/home/dobo/.kodi/cdm/libwidevinecdm.so+0x969d40)
    xbmc#5 0x7f6e2757e7fc  (/home/dobo/.kodi/cdm/libwidevinecdm.so+0x97e7fc)
    xbmc#6 0x7f6e27569c36  (/home/dobo/.kodi/cdm/libwidevinecdm.so+0x969c36)
    xbmc#7 0x7f6e3151fb28  (<unknown module>)
    xbmc#8 0x7f6e3151c0b1  (<unknown module>)
    xbmc#9 0x7f6e31526947  (<unknown module>)
    xbmc#10 0x7f6e31526729  (<unknown module>)
    xbmc#11 0x7f6e31526620  (<unknown module>)
    xbmc#12 0x7f6e315265a1  (<unknown module>)
    xbmc#13 0x7f6e31526585  (<unknown module>)
    xbmc#14 0x7f6e46ed72c2 in execute_native_thread_routine /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:82

Thread T51 created by T45 here:
    #0 0x7f6e49464207 in __interceptor_pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:207
    xbmc#1 0x7f6e46ed73a9 in __gthread_create /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:663
    xbmc#2 0x7f6e46ed73a9 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:147
    xbmc#3 0x7f6e31522028  (<unknown module>)
    xbmc#4 0x7f6e27569d40  (/home/dobo/.kodi/cdm/libwidevinecdm.so+0x969d40)
    xbmc#5 0x7f6e2757e7fc  (/home/dobo/.kodi/cdm/libwidevinecdm.so+0x97e7fc)
    xbmc#6 0x7f6e2757e70e  (/home/dobo/.kodi/cdm/libwidevinecdm.so+0x97e70e)
    xbmc#7 0x7f6e274e4ecc  (/home/dobo/.kodi/cdm/libwidevinecdm.so+0x8e4ecc)
    xbmc#8 0x7f6e3151f280  (<unknown module>)
    xbmc#9 0x7f6e314e9ea1  (<unknown module>)
    xbmc#10 0x7f6e314e49bb  (<unknown module>)
    xbmc#11 0x7f6e314f45ce  (<unknown module>)
    xbmc#12 0x7f6e2889228f in SESSION::CSession::InitializeDRM(bool) /home/dobo/kodi/inputstream.adaptive/src/Session.cpp:643
    xbmc#13 0x7f6e28893279 in SESSION::CSession::InitializePeriod(bool) /home/dobo/kodi/inputstream.adaptive/src/Session.cpp:723
    xbmc#14 0x7f6e2888e36d in SESSION::CSession::Initialize() /home/dobo/kodi/inputstream.adaptive/src/Session.cpp:266
    xbmc#15 0x7f6e28775f4c in CInputStreamAdaptive::Open(kodi::addon::InputstreamProperty const&) /home/dobo/kodi/inputstream.adaptive/src/main.cpp:101
    xbmc#16 0x7f6e287871a1 in kodi::addon::CInstanceInputStream::ADDON_Open(AddonInstance_InputStream const*, INPUTSTREAM_PROPERTY*) (/usr/lib/kodi/addons/inputstream.adaptive/inputstream.adaptive.so.20.3.2+0x3871a1)
    xbmc#17 0x55c2811f4ddc in CInputStreamAddon::Open() (/usr/lib/kodi/kodi.bin+0xb66ddc)

Thread T45 created by T0 here:
    #0 0x7f6e49464207 in __interceptor_pthread_create /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_interceptors.cpp:207
    xbmc#1 0x7f6e46ed73a9 in __gthread_create /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:663
    xbmc#2 0x7f6e46ed73a9 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:147
```

The root cause of the crash is unknown as it comes directly from
libwidevine library. But it crashes when we call cdm->TimerExpired when
the session is closed. After applying mentioned commit I'm not able
to reproduce the crash anymore.

Script to reproduce the issue:
```
set -x

URI='Change it to some uri to play'

while true; do
  curl -s "http://kodi:kodi@127.0.0.1:8080/jsonrpc" -H 'Content-Type: application/json' --data "{\"jsonrpc\":\"2.0\",\"method\":\"Player.Open\",\"params\":{\"item\":{\"file\":\"$URI\"}}}"
  sleep $[ ($RANDOM % 70 + 30) / 10.0 ]

  curl -s "http://kodi:kodi@127.0.0.1:8080/jsonrpc" -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"Player.Stop","params":{"playerid":1}}'
  sleep 1
done
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants