Friday, 2026-08-21

Mister_Magistergreat now claude learned it can use mpris to play and pause videos and is startling me01:01
Mister_Magister@abranson so after HOURS this is what the dream team established "What we know for certain: main GUI thread gets stuck waiting on another thread's stale wl_display_prepare_read() that never got completed. It's triggered by qmlglsink pausing while anything else keeps the QML event loop waking (confirmed with a plain spinner). We've ruled out gst-droid, subtitleoverlay, outer pipeline wrapping, wl_seat version, and checked01:10
Mister_Magisterupstream GStreamer master has no relevant fix. The remaining suspect is Qt's own render-loop/frame-callback code reacting badly to qmlglsink's async Qt::QueuedConnection update() calls — which we don't have forked/patchable."01:11
Mister_MagisterI'm kinda tempted to say "jolla fix it >:(" but i'm quite sure Sami won't say "yeah do it boisssss"01:11
Mister_MagisterIt's easily reproducible and can be reproduced in milliseconds so like, that part is easy01:14
Mister_Magisterclaude was like "lets google it" and i'm like "nah no way someone had this exact bug"01:18
Mister_Magisterwell… someone had this exact bug https://qt-project.atlassian.net/browse/QTBUG-6607501:18
Mister_Magisterthis stuff is so much beyond my head man01:21
Mister_Magisterbut that really shows difference in what someone specializes in, I outsmart claude in php multiple times per day, but this is whole different world01:23
Mister_Magisterand yes i won't stop reminding everyone that i'm lowly php dev xd01:29
*** n2klb_ is now known as n2klb01:53
Mister_Magisterturns out, again, THAT IT WASN'T IT ugh01:54
Mister_Magisterfinally it arrived at partial workaround02:55
Mister_MagisterAAAAAAAA IT FOUND THE FIX03:44
Mister_Magisterthere's one more bug03:44
Mister_Magisterbut the biggest hurdle is behind03:44
T42<Mister_Magister> @abranson Added fix in gst-plugins-base04:01
Mister_Magistertoday my usage limits reset :P04:06
Mister_Magistermal: so i tried your dirty patch with .58 but its the same as android15 branch, my apps still crash07:19
Mister_Magister@abranson there's one last bug left, when you turn screen off and on again the video will be forever black, and it turns out it's another difficult issue07:20
Mister_Magistermal: also multiple people, on multiple devices, experienced during updating to 5.1 via version --dup, flashing screen with text "no apps running" and I'm wondering what in the world is even that and how did that even happen, but that's gotta be something sfos related right? So something jolla did that I don't know about?07:27
T42<abranson> that usually means that the UI failed to launch07:28
Mister_Magisterweird07:29
Mister_Magisterwhat's weirdest I didn't experience that07:29
Mister_Magisterand its weird that version --dup would crash the ui, it never happened  before07:30
T42<abranson> that new patch in plugins-base looks very expensive with the timer polling so rapidly. maybe have a look if you can fix it on the other side, in qtwayland?07:35
T42<adampigg> mal: what would cause the 'plugged-in' icon to alwsy show, with usb-moded otherwise working correctly?07:36
T42<adampigg> have tried combinations of android_tracking and usbextcon_trakcking07:37
Mister_Magister@abranson not sure what you mean by expensive, it doesn't lag ui whatsoever, quite opposite07:41
Mister_Magister@adampigg the charging?07:41
T42<adampigg> yeah07:42
Mister_Magistercharging is separate from usb-moded thats why it had no effect07:42
Mister_Magister5 seconds07:42
Mister_Magisterhttps://github.com/VerdandiTeam/droid-config-miami/blob/master/sparse/etc/mce/70-power.ini07:42
Mister_Magistergotta blacklist devices that do not report charging state correctly07:43
Mister_Magisterthey're in /sys/class/power_supply/07:43
Mister_Magisterif any of the subdirectories doesn't report charging state correctly, blacklist the poop out of it07:43
Mister_Magister@abranson with the patch i have full 120fps in app without single tiniest drop in fps07:44
T42<abranson> right, but it's polling like crazy07:45
Mister_Magisterbut it fixes ui lag07:45
Mister_Magisterthere's no consequence to the polling07:45
T42<abranson> it's a workaround rather than a fix07:45
Mister_MagisterWell i'm open for proper fix ideas :D07:46
Mister_MagisterLike any help would be super appreciated than me stumbling blind with LLM07:51
T42<abranson> do you have a stack trace of the hang?07:54
T42<abranson> I suspect qtwayland isn't properly checking if there is anything to read before blocking on it. maybe in here: https://github.com/sailfishos/qtwayland/blob/mer-5.6/src/client/qwaylanddisplay.cpp#L17207:55
T42<abranson> point your claude at that :)07:56
Mister_Magisterwe did try to fix qtwayland like 3 times07:56
Mister_Magisterpretty sure it touched that too07:56
Mister_Magisteri mean its SUPER easily reproudcible if you wwant07:56
Mister_Magisteryou just need to install all 4 PRs xd07:57
Mister_Magisterand my app with WIP change that uses qmlglsink07:57
Mister_Magistervery simple07:57
T42<abranson> I do have other things to do you know :)07:58
Mister_Magisterbut this is important07:59
Mister_MagisterI also have other things to do and yet i pulled all nighter prompting claude because i want to improve quality of life of users of sfos07:59
T42<abranson> I'll see if I get time later...08:00
Mister_Magisterthankies08:00
Mister_Magistermy weekly limit resets in 1h so i exhaused all my tokens (im getting my moneys worth >:) ) so i'm taking a break currently also started work08:00
T42<Mister_Magister> @abranson "No poll() at all between prepare_read() and read_events(). The reviewer's instinct that this "isn't checking before blocking" is architecturally fair — but I don't think it's actually what caused the freeze, and fixing it alone wouldn't have solved it. Here's why:08:45
T42<Mister_Magister> 08:45
T42<Mister_Magister> wl_display_read_events()'s blocking isn't about the socket having data — it's about reader_count. It decrements the count, and if another thread also has an outstanding prepare_read(), it pthread_cond_waits for that other thread to finish, regardless of whether the actual socket has anything to read. A poll(fd, POLLIN, 0) check before calling it wouldn't see that contention at all — that's pure userspace lock state, invisible to p08:45
T42<Mister_Magister> 08:45
T42<Mister_Magister> The fix that actually worked is on the GStreamer side, and it works by making GStreamer never call prepare_read at all for a foreign display — so there's no second party left to contend with flushRequests() in the first place. With that in place, flushRequests() is safe as-is, unbounded read_events() and all, because it's now always the sole reader.08:45
T42<Mister_Magister> 08:45
T42<Mister_Magister> So the reviewer's suggested location isn't where the correctness fix belongs — but their cost complaint about my 16ms timer is legitimate for a different reason: that timer isn't guarding against contention (there's none left), it's just draining GStreamer's own private Wayland event queue (frame-callback dispatch etc.), which is a separate, genuinely necessary but much less time-critical job. I could relax that interval a lot (e.g.08:45
Mister_Magistersorry irc08:45
Mister_MagisterI have no idea what this is talking about at all lololol08:45
Mister_MagisterWould that fix (increasing to 100ms) be okay with you or nah08:47
Mister_Magisterand by "10fps regression" it means situation where all apps at all time were running at 10fps08:48
T42<abranson> well that's a can of worms then isn't it09:33
Mister_Magisterits quite a deep bug, and screen going black is second just as big one09:40
Mister_Magisterlike it wasn't easy to "workaround" if you want to call it workaround09:40
T42<abranson> at the root of it, it's looking like an old qt issue09:40
Mister_Magisterthat's the root of all issues with sfos, so that doesn't tell us much :P09:40
T42<abranson> which is tricky if there's a solution later on that we can't cherry pick.09:40
T42<abranson> that qtwayland is definitely wrong. it should be flushing and polling between the prepare and read.09:41
T42<abranson> but I don't know enough about it. i just think that running a rapid timer when paused will cause lots of battery draining.09:43
Mister_Magisterthen decreasing to 100ms will fix the issue no?09:44
T42<abranson> not sure that would really help that much. still preventing sleep. that '10fps regression' sounds like a real risk too.09:46
T42<abranson> it's a threading problem, right?09:46
Mister_Magisteri have no freaking clue i don't know what's all this about09:46
Mister_Magisterall i know when i pause it feezes the app and then feezes periodically, and with this fix its smooth 120fps always every day09:47
T42<Mister_Magister> @abranson this time claude agrees with you, but whether or not new fix fixes it still we'll see "The reviewer is right, and the gst source confirms it."11:18
T42<Mister_Magister> wait no nevermind it just remembered it tried your proposed solution and it didn't work11:26
T42<abranson> he's a bit indecisive isn't he11:30
T42<Mister_Magister> Well i keep yeeting the context because i'm trying to save tokens xd11:31
T42<Mister_Magister> @abranson you might enjoy this commit history https://github.com/Michal-Szczepaniak/qtwayland/commits/fix/frame-sync-timeout/11:34
T42<Mister_Magister> aaand it ran out of tokens so thats it for today :)11:39
T42<adampigg> ai coders unable to proceed without tokens 😂11:42
T42<Mister_Magister> Man i have no clue whats this all about, literally 0, its so in-depth, i'm just lowly web developer11:42
T42<Mister_Magister> but if LLM can fix it and nobody here wants to help me, what other option do i have11:43
T42<Mister_Magister> some wayland/qt/gstreamer thread blocking mumbo-jumbo11:43
T42<abranson> it's important that someone understands what it's talking about, otherwise things could get extremely messy :)11:50
T42<Mister_Magister> yeah i leave that to the jolla code reviewers11:50
T42<Mister_Magister> i mean alternatively jolla could just fix it but we all know that's not gonna happen so that's next best thing :P11:51
T42<Mister_Magister> having at least something to start with is massive help anyway11:52
T42<Mister_Magister> like you can make fun of me all you want and I don't really care, what's important is that this gets merged and is working12:04
T42<adampigg> i only jest :)12:11
T42<Mister_Magister> I know my friend :)12:12
T42<Mister_Magister> I just really, really care about enabling sfos users to have kickass video player, then cheeky users can just build gst-plugins-bad with everything enabled and then nothing will be stopping them from simply playing direct bluray/dvd remuxes which is awesome in my opinion12:13
T42<abranson> it looks like qtwayland used to have an event thread but it was removed: https://github.com/sailfishos/qtwayland/commit/302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd12:14

Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!