Flint2 GL UI broken after package updates(V4.7.5-op24)

Good afternoon!
I have a Flint2 with stock op-24 ( V4.7.5-op24) image based on OpenWrt 24.10.0-rc5, r28304-6dacba30a7 in which the GL UI is getting stuck after package updates. The LUCI and SSH work fine.


Looking further in the nginx logs I see the following:

025/05/18 16:59:54 [error] 10543#0: *8009 lua entry thread aborted: runtime error: /usr/share/gl-ngx/oui-rpc.lua:5: attempt to call field 'encode_empty_table_as_object' (a nil value)
stack traceback:
coroutine 0:
	/usr/share/gl-ngx/oui-rpc.lua:5: in function </usr/share/gl-ngx/oui-rpc.lua:1>, client: 192.168.64.254, server: , request: "POST /rpc HTTP/1.1", host: "192.168.64.1", referrer: "https://192.168.64.1/"
2025/05/18 16:59:54 [error] 10544#0: *8010 lua entry thread aborted: runtime error: /usr/share/gl-ngx/oui-rpc.lua:5: attempt to call field 'encode_empty_table_as_object' (a nil value)
stack traceback:
coroutine 0:
	/usr/share/gl-ngx/oui-rpc.lua:5: in function </usr/share/gl-ngx/oui-rpc.lua:1>, client: 192.168.64.254, server: , request: "POST /rpc HTTP/1.1", host: "192.168.64.1", referrer: "https://192.168.64.1/"
2025/05/18 16:59:54 [error] 10544#0: *8011 lua entry thread aborted: runtime error: /usr/share/gl-ngx/oui-rpc.lua:5: attempt to call field 'encode_empty_table_as_object' (a nil value)
stack traceback:
coroutine 0:
	/usr/share/gl-ngx/oui-rpc.lua:5: in function </usr/share/gl-ngx/oui-rpc.lua:1>, client: 192.168.64.254, server: , request: "POST /rpc HTTP/1.1", host: "192.168.64.1", referrer: "https://192.168.64.1/"
root@GL-MT6000:/var/log/nginx# head error.log 
2025/05/18 14:37:01 [error] 10349#0: *1 lua entry thread aborted: runtime error: /usr/share/gl-ngx/oui-rpc.lua:5: attempt to call field 'encode_empty_table_as_object' (a nil value)
stack traceback:
coroutine 0:
	/usr/share/gl-ngx/oui-rpc.lua:5: in function </usr/share/gl-ngx/oui-rpc.lua:1>, client: 127.0.0.1, server: , request: "POST /rpc HTTP/1.1", host: "127.0.0.1"
2025/05/18 14:37:01 [error] 10350#0: *2 lua entry thread aborted: runtime error: /usr/share/gl-ngx/oui-rpc.lua:5: attempt to call field 'encode_empty_table_as_object' (a nil value)
stack traceback:
coroutine 0:
	/usr/share/gl-ngx/oui-rpc.lua:5: in function </usr/share/gl-ngx/oui-rpc.lua:1>, client: 127.0.0.1, server: , request: "POST /rpc HTTP/1.1", host: "127.0.0.1"
2025/05/18 14:37:01 [error] 10351#0: *3 lua entry thread aborted: runtime error: /usr/share/gl-ngx/oui-rpc.lua:5: attempt to call field 'encode_empty_table_as_object' (a nil value)
stack traceback:
root@GL-MT6000:/var/log/nginx# head error.log 
2025/05/18 14:37:01 [error] 10349#0: *1 lua entry thread aborted: runtime error: /usr/share/gl-ngx/oui-rpc.lua:5: attempt to call field 'encode_empty_table_as_object' (a nil value)
stack traceback:
coroutine 0:
	/usr/share/gl-ngx/oui-rpc.lua:5: in function </usr/share/gl-ngx/oui-rpc.lua:1>, client: 127.0.0.1, server: , request: "POST /rpc HTTP/1.1", host: "127.0.0.1"

logread shows the following interesting things

Sun May 18 16:55:38 2025 daemon.err eco[11859]: call wifi.get_config fail with http code: 500
Sun May 18 16:55:40 2025 daemon.err eco[11876]: call wifi.get_config fail with http code: 500
Sun May 18 16:55:42 2025 daemon.err utrace: failed to exec eco: Not a tty
Sun May 18 16:55:42 2025 daemon.err utrace: failed to start eco
Sun May 18 16:55:42 2025 daemon.info procd: Instance gl-ngx-session::instance1 s in a crash loop 6 crashes, 0 seconds since last crash
Sun May 18 16:55:42 2025 daemon.err eco[11894]: call wifi.get_config fail with http code: 500
Sun May 18 16:55:44 2025 daemon.err eco[11912]: call wifi.get_config fail with http code: 500
Sun May 18 16:55:46 2025 daemon.err eco[11936]: call wifi.get_config fail with http code: 500
Sun May 18 16:55:48 2025 daemon.err eco[11954]: call wifi.get_config fail with http code: 500

List of installed packages with versions available at [Pastebin](https://pastebin.com/raw/HYc4ApXf) for 30 days.
Here is roughly what I did

  1. switched to -op24
  2. updated packages and tailscale
  3. added SQM and a few extra wi-fi networks over luci
  4. tried today to see if the GL inet still works
  5. did a backup and package export ( without versions).
  6. Decided to ask for assistance before reverting back to stock image and repeating almost the same update procedures except for tailscale

Suggestions what to fix /avoid are welcome!

Best is to reset the device, or if you can take a backup do so before resetting, you may still be able to access ssh or winscp to do sysupgrade -b /tmp/backup.tar.gz then with winscp download it.

There is an miconception about updating plugins, not only with GL-iNet but in general with OpenWrt.

The plugins/update mechanism is not advised to use for updating packages, because some updates include core packages which are not compatible with the kernel, and aren't compatible with the OpenWrt build, this could easily result in a softbrick.

A complete upgrade is done through firmware images, this also includes security fixes for vulnerabilities.

The best way to use this system is when you want to install user based packages, without the deep knowledge of the core OpenWrt code and functions, it is highly unadvised to update all packages including the core ones.

upgrading user based packages is less risky but you always need to look to the dependencies and kmods, 9/10 it isn't necessary or worth the time unless there is a very specific change you need for your use.

thank you. then i will do just opkg update and opkg install from now on. given I'm on beta, breaking changes are more likely to occur