WebPlatformForEmbedded / WPEWebKit

WPE WebKit port (downstream)
213 stars 136 forks source link

WPE 2.38: Unable to launch Browser apps using curl command or controller UI #1368

Closed hridhya-narayanan-infosys closed 2 months ago

hridhya-narayanan-infosys commented 2 months ago

On RPI, its observed that the app does not launch when attempting to start second browser app after successfully launching the first one using curl commands or controller UI.

Steps to reproduce:

  1. Disable Resident App plugin and activate WebKitBrowser Plugin
  2. Launch Browser app1 either from controller UI or using curl command curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.Sudoku"}' http://127.0.0.1:9998/jsonrpc
  3. Once the app is successfully launched , launch Browser app2 using curl or controller UI curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN"}' http://127.0.0.1:9998/jsonrpc
  4. Observe app is not launched. But the curl command shows app is loaded. curl -d '{"method": "WebKitBrowser.1.url"}' http://localhost:9998/jsonrpc {"jsonrpc":"2.0","result":"https:\/\/widgets.metrological.com\/lightning\/liberty\/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN"}

After sometime WebKitBrowser plugin gets deactivated due to reason Memory exceeded.

Log:

2024 Jul 17 10:32:34.205445 WPEFramework[17752]:  [Notification]: New URL: https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN
2024 Jul 17 10:32:34.210444 WPEFramework[974]:  [Notification]: URLChanged: { "url": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN", "loaded": false }
2024 Jul 17 10:32:39.691684 WPEFramework[17752]:  [Notification]: WebProcess is unresponsive, pid=17763, reply num=1(max=6), url=https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN
2024 Jul 17 10:32:46.691888 WPEFramework[17752]:  [Notification]: WebProcess is unresponsive, pid=17763, reply num=2(max=6), url=https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN
2024 Jul 17 10:32:56.698258 WPEFramework[17752]:  [Notification]: WebProcess is unresponsive, pid=17763, reply num=3(max=6), url=https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN
2024 Jul 17 10:33:06.695661 WPEFramework[17752]:  [Notification]: WebProcess is unresponsive, pid=17763, reply num=4(max=6), url=https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN
2024 Jul 17 10:33:15.786699 WPEFramework[974]:  [Error]: Status MetaData Exceeded. 627
2024 Jul 17 10:33:15.786699 WPEFramework[974]:  [Fatal]: FORCED Shutdown: WebKitBrowser by reason: MemoryExceeded.
2024 Jul 17 10:33:15.788908 WPEFramework[974]:  [Error]: Restarting WebKitBrowser again because we detected it misbehaved.

wpeframework.log

Frequency: 100%

SW version:

root@raspberrypi4-64-rdk-android-ipstb-oss:/opt/logs# cat /version.txt
imagename:rdk-ipstb-oss-image_nightly-20240717-dunfell_20240717010350
BRANCH=nightly-20240717-dunfell
YOCTO_VERSION=dunfell
VERSION=nightly-20240717-dunfell.07.17.24
SPIN=0
BUILD_TIME="2024-07-17 01:03:50"
WPE_WEBKIT_VERSION=2.38.5+gitAUTOINC+44cb95d724-r10
WPEFRAMEWORK-VERSION=R4.2
Generated on Wed Jul 17  01:03:50 UTC 2024
root@raspberrypi4-64-rdk-android-ipstb-oss:/opt/logs#
pgorszkowski-igalia commented 2 months ago

The problem can also be reproduced on wpe 2.22, 2.42, and even on upstream (CNN app is finally loaded but the memory consumption is huge, calling GC from the inspector reduces memory usage significantly). The problem does not exist on FF or Chrome.

pgorszkowski-igalia commented 2 months ago

It is not recommended to open next app without calling "boot" page (which is responsible for correctly close the previous app). So you should call:

https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.Sudoku
https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#boot
https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN

In that case the problem will be solved.

hridhya-narayanan-infosys commented 2 months ago

Hi @pgorszkowski-igalia

I have checked the behaviour with calling boot page before launching second app. In this case no issue is observed. Apps are launched properly.

root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url"}'  http://localhost:9998/jsonrpc
{"jsonrpc":"2.0","result":"about:blank"}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 

root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.Sudoku"}' http://127.0.0.1:9998/jsonrpc
{"jsonrpc":"2.0","result":null}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url"}'  http://localhost:9998/jsonrpc
{"jsonrpc":"2.0","result":"https:\/\/widgets.metrological.com\/lightning\/liberty\/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.Sudoku"}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 

root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#boot"}' http://127.0.0.1:9998/jsonrpc
{"jsonrpc":"2.0","result":null}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
 root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url"}'  http://localhost:9998/jsonrpc
{"jsonrpc":"2.0","result":"https:\/\/widgets.metrological.com\/lightning\/liberty\/2e3c4fc22f0d35e3eb7fdb47eb7d4658#boot"}

root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN"}' http://127.0.0.1:9998/jsonrpc
{"jsonrpc":"2.0","result":null}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url"}'  http://localhost:9998/jsonrpc
{"jsonrpc":"2.0","result":"https:\/\/widgets.metrological.com\/lightning\/liberty\/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.CNN"}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 

root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#boot"}' http://127.0.0.1:9998/jsonrpc
{"jsonrpc":"2.0","result":null}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url"}'  http://localhost:9998/jsonrpc
{"jsonrpc":"2.0","result":"https:\/\/widgets.metrological.com\/lightning\/liberty\/2e3c4fc22f0d35e3eb7fdb47eb7d4658#boot"}

root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.DW"}' http://127.0.0.1:9998/jsonrpc
{"jsonrpc":"2.0","result":null}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url"}'  http://localhost:9998/jsonrpc
{"jsonrpc":"2.0","result":"https:\/\/widgets.metrological.com\/lightning\/liberty\/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.DW"}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 

root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#boot"}' http://127.0.0.1:9998/jsonrpc
{"jsonrpc":"2.0","result":null}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url"}'  http://localhost:9998/jsonrpc
{"jsonrpc":"2.0","result":"https:\/\/widgets.metrological.com\/lightning\/liberty\/2e3c4fc22f0d35e3eb7fdb47eb7d4658#boot"}

root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url", "params": "https://widgets.metrological.com/lightning/liberty/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.Sudoku"}' http://127.0.0.1:9998/jsonrpc
{"jsonrpc":"2.0","result":null}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
root@raspberrypi4-64-rdk-android-ipstb-oss:~# curl -d '{"method": "WebKitBrowser.1.url"}'  http://localhost:9998/jsonrpc
{"jsonrpc":"2.0","result":"https:\/\/widgets.metrological.com\/lightning\/liberty\/2e3c4fc22f0d35e3eb7fdb47eb7d4658#app:com.metrological.app.Sudoku"}root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
root@raspberrypi4-64-rdk-android-ipstb-oss:~# 
pgorszkowski-igalia commented 2 months ago

@hridhya-narayanan-infosys : so we can close this ticket, right?

hridhya-narayanan-infosys commented 2 months ago

@pgorszkowski-igalia; yes we can close