| Mister_Magister | great now claude learned it can use mpris to play and pause videos and is startling me | 01: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 checked | 01:10 |
| Mister_Magister | upstream 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_Magister | I'm kinda tempted to say "jolla fix it >:(" but i'm quite sure Sami won't say "yeah do it boisssss" | 01:11 |
| Mister_Magister | It's easily reproducible and can be reproduced in milliseconds so like, that part is easy | 01:14 |
| Mister_Magister | claude was like "lets google it" and i'm like "nah no way someone had this exact bug" | 01:18 |
| Mister_Magister | well… someone had this exact bug https://qt-project.atlassian.net/browse/QTBUG-66075 | 01:18 |
| Mister_Magister | this stuff is so much beyond my head man | 01:21 |
| Mister_Magister | but that really shows difference in what someone specializes in, I outsmart claude in php multiple times per day, but this is whole different world | 01:23 |
| Mister_Magister | and yes i won't stop reminding everyone that i'm lowly php dev xd | 01:29 |
| *** n2klb_ is now known as n2klb | 01:53 | |
| Mister_Magister | turns out, again, THAT IT WASN'T IT ugh | 01:54 |
| Mister_Magister | finally it arrived at partial workaround | 02:55 |
| Mister_Magister | AAAAAAAA IT FOUND THE FIX | 03:44 |
| Mister_Magister | there's one more bug | 03:44 |
| Mister_Magister | but the biggest hurdle is behind | 03:44 |
| T42 | <Mister_Magister> @abranson Added fix in gst-plugins-base | 04:01 |
| Mister_Magister | today my usage limits reset :P | 04:06 |
| Mister_Magister | mal: so i tried your dirty patch with .58 but its the same as android15 branch, my apps still crash | 07: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 issue | 07:20 |
| Mister_Magister | mal: 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 launch | 07:28 |
| Mister_Magister | weird | 07:29 |
| Mister_Magister | what's weirdest I didn't experience that | 07:29 |
| Mister_Magister | and its weird that version --dup would crash the ui, it never happened before | 07: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_trakcking | 07:37 |
| Mister_Magister | @abranson not sure what you mean by expensive, it doesn't lag ui whatsoever, quite opposite | 07:41 |
| Mister_Magister | @adampigg the charging? | 07:41 |
| T42 | <adampigg> yeah | 07:42 |
| Mister_Magister | charging is separate from usb-moded thats why it had no effect | 07:42 |
| Mister_Magister | 5 seconds | 07:42 |
| Mister_Magister | https://github.com/VerdandiTeam/droid-config-miami/blob/master/sparse/etc/mce/70-power.ini | 07:42 |
| Mister_Magister | gotta blacklist devices that do not report charging state correctly | 07:43 |
| Mister_Magister | they're in /sys/class/power_supply/ | 07:43 |
| Mister_Magister | if any of the subdirectories doesn't report charging state correctly, blacklist the poop out of it | 07:43 |
| Mister_Magister | @abranson with the patch i have full 120fps in app without single tiniest drop in fps | 07:44 |
| T42 | <abranson> right, but it's polling like crazy | 07:45 |
| Mister_Magister | but it fixes ui lag | 07:45 |
| Mister_Magister | there's no consequence to the polling | 07:45 |
| T42 | <abranson> it's a workaround rather than a fix | 07:45 |
| Mister_Magister | Well i'm open for proper fix ideas :D | 07:46 |
| Mister_Magister | Like any help would be super appreciated than me stumbling blind with LLM | 07: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#L172 | 07:55 |
| T42 | <abranson> point your claude at that :) | 07:56 |
| Mister_Magister | we did try to fix qtwayland like 3 times | 07:56 |
| Mister_Magister | pretty sure it touched that too | 07:56 |
| Mister_Magister | i mean its SUPER easily reproudcible if you wwant | 07:56 |
| Mister_Magister | you just need to install all 4 PRs xd | 07:57 |
| Mister_Magister | and my app with WIP change that uses qmlglsink | 07:57 |
| Mister_Magister | very simple | 07:57 |
| T42 | <abranson> I do have other things to do you know :) | 07:58 |
| Mister_Magister | but this is important | 07:59 |
| Mister_Magister | I 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 sfos | 07:59 |
| T42 | <abranson> I'll see if I get time later... | 08:00 |
| Mister_Magister | thankies | 08:00 |
| Mister_Magister | my 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 work | 08: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 p | 08: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_Magister | sorry irc | 08:45 |
| Mister_Magister | I have no idea what this is talking about at all lololol | 08:45 |
| Mister_Magister | Would that fix (increasing to 100ms) be okay with you or nah | 08:47 |
| Mister_Magister | and by "10fps regression" it means situation where all apps at all time were running at 10fps | 08:48 |
| T42 | <abranson> well that's a can of worms then isn't it | 09:33 |
| Mister_Magister | its quite a deep bug, and screen going black is second just as big one | 09:40 |
| Mister_Magister | like it wasn't easy to "workaround" if you want to call it workaround | 09:40 |
| T42 | <abranson> at the root of it, it's looking like an old qt issue | 09:40 |
| Mister_Magister | that's the root of all issues with sfos, so that doesn't tell us much :P | 09: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_Magister | then 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_Magister | i have no freaking clue i don't know what's all this about | 09:46 |
| Mister_Magister | all i know when i pause it feezes the app and then feezes periodically, and with this fix its smooth 120fps always every day | 09: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 work | 11:26 |
| T42 | <abranson> he's a bit indecisive isn't he | 11:30 |
| T42 | <Mister_Magister> Well i keep yeeting the context because i'm trying to save tokens xd | 11: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 developer | 11:42 |
| T42 | <Mister_Magister> but if LLM can fix it and nobody here wants to help me, what other option do i have | 11:43 |
| T42 | <Mister_Magister> some wayland/qt/gstreamer thread blocking mumbo-jumbo | 11: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 reviewers | 11: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 :P | 11:51 |
| T42 | <Mister_Magister> having at least something to start with is massive help anyway | 11: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 working | 12: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 opinion | 12:13 |
| T42 | <abranson> it looks like qtwayland used to have an event thread but it was removed: https://github.com/sailfishos/qtwayland/commit/302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd | 12:14 |
Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!