plasma's completely broken process model for plasmoids that allows a single plasmoid to block or kill the entire plasma stack.
Announcement
Collapse
No announcement yet.
KDE Plasma 5.5 Beta Presents New Features
Collapse
X
-
-
Originally posted by darkbasic View PostI use my laptop with two external monitors attached through a single mini displayport cable and the lid closed. When electricity goes off and back again I have no signal anymore and I have to restart my laptop using magic sysrq keys. Or let's talk about the unusable KWin with Intel drivers on Broadwell which forces me to use Xrender. I'm using Arch Linux, so everything is "the latest and greatest".
Comment
-
For me Plasma 5 is not buggy at all. The screen problem is a Qt bug and the Broadwell problem is an Intel driver bug.
I couldn't care less about Breeze icons. Oxygen icons are perfect and enabling those is the first thing I do.
The main thing I'm looking forward to now is getting rid of kdebase4-runtime. Only a few things that need packaging to go!
- Likes 1
Comment
-
Originally posted by zanny View Post
The lack of well threaded plasmoids is a pretty big oversight I'll wager. It is super insane how almost any desktop behavior (including file IO using kio) can block the plasmashell process. Literally step one when designing a modern desktop shell is "never block the shell ever especially with file IO".
Concerning the "threading" model of plasmoids. Well it's not working the way you think. In fact Plasmoids aren't supposed to do anything except rendering. The heavy work is done by DataEngines. So moving the plasmoid into a thread doesn't give you anything. Yes I have heard many users saying that this is needed or that it needs to be out of process, but people who actually looked at the architecture don't say that. We had in the past a few blocking D-Bus calls, that shouldn't happen. Unfortunately there are also oddities like just creating a QDBusInterface blocks. That's rather unexpected for a developer. So even if you design your whole application in a non-blocking way, being very aware of the danger, this one call might still block your interface, without you having any clue about it. I investigated such an issue recently. I was cursing the developer over the blocking calls. Then looked into the code and I went "oooooh, it's all perfect, I have never seen better DBus calls" - every single call nicely async and the block in this one call. It needs highly experienced developers to know that as you can see. The best DBus async code I had ever seen was affected by it. So yes, such issues can still be there, we'll find them one by one and kill them. Ideally users would tell us with a good bug report where they hit such a freeze, that makes it way easier than to try to get from Phoronix forum rants where it blocks.
- Likes 1
Comment
-
Originally posted by darkbasic View PostI use my laptop with two external monitors attached through a single mini displayport cable and the lid closed. When electricity goes off and back again I have no signal anymore and I have to restart my laptop using magic sysrq keys. Or let's talk about the unusable KWin with Intel drivers on Broadwell which forces me to use Xrender. I'm using Arch Linux, so everything is "the latest and greatest".
Unfortunately this means that the driver skeletons need to be shaken out before Plasma 5 will be stable on Intel graphics systems. There's no sense in blaming Plasma for a fault in MESA any more than it makes sense to blame a boat for hitting rocks in the water.
Comment
-
Originally posted by mgraesslin View PostConcerning the "threading" model of plasmoids. Well it's not working the way you think. In fact Plasmoids aren't supposed to do anything except rendering. The heavy work is done by DataEngines. So moving the plasmoid into a thread doesn't give you anything. Yes I have heard many users saying that this is needed or that it needs to be out of process, but people who actually looked at the architecture don't say that. We had in the past a few blocking D-Bus calls, that shouldn't happen. Unfortunately there are also oddities like just creating a QDBusInterface blocks. That's rather unexpected for a developer. So even if you design your whole application in a non-blocking way, being very aware of the danger, this one call might still block your interface, without you having any clue about it. I investigated such an issue recently. I was cursing the developer over the blocking calls. Then looked into the code and I went "oooooh, it's all perfect, I have never seen better DBus calls" - every single call nicely async and the block in this one call. It needs highly experienced developers to know that as you can see. The best DBus async code I had ever seen was affected by it. So yes, such issues can still be there, we'll find them one by one and kill them. Ideally users would tell us with a good bug report where they hit such a freeze, that makes it way easier than to try to get from Phoronix forum rants where it blocks.
Which... It's all nice and fine to go for speed over safety when you know your payload is safe, but let's say Plasma Mobile actually takes off for example now you have a whole bunch of third parties whose payloads aren't necessarily going to be, well now you have a problem.
Comment
-
Originally posted by Luke_Wolf View PostTurns out Aaron was wrong, and that QML did not in fact save the day because it turns out that under plasma 5 if a plasmoid hangs or crashes that it still takes the rest of plasma with it
To make it quite clear: it wouldn't. It's not a useful idea to go plasmoids in different processes. It wouldn't help anything. Maybe DataEngines in own processes, but not Plasmoids. And on that I hope that you understand that I trust my own experience on the architecture and the one of my peers more than yours. Sorry about that :-) It would be great if you could also assume that we know what we're doing.
- Likes 1
Comment
-
Originally posted by Kver View PostThe answer to your problems is right in your statement, you're on Intel graphics.
Regarding bug reports: I reported some bugs upstream against Intel drivers but it seems developers are simply not interested in KDE issues and I think there is no reason bothering Martin with issues which are not his fault. My solution right now is XRender and an UPS.## VGA ##
AMD: X1950XTX, HD3870, HD5870
Intel: GMA45, HD3000 (Core i5 2500K)
Comment
-
Originally posted by mgraesslin View Post
So if Aaron with all his experience was wrong (just for the record: Aaron did hardly any work on Plasma 5), what makes you think you know better and that multi process model would safe the day? What if we now change the complete architecture and go for "Luke_Wolf told us one process per plasmoid" and it turns out it doesn't help?
To make it quite clear: it wouldn't. It's not a useful idea to go plasmoids in different processes. It wouldn't help anything. Maybe DataEngines in own processes, but not Plasmoids. And on that I hope that you understand that I trust my own experience on the architecture and the one of my peers more than yours. Sorry about that :-) It would be great if you could also assume that we know what we're doing.
Furthermore pray tell exactly how breaking plasmoids out into subprocesses wouldn't isolate crashes and hangs, the reason that plasma 5 crashes is that Plasmoid X does something bad with memory which then causes the OS to terminate the plasma-shell process (whether that's in the QML scene itself or in the data engine, which admittedly in principle these should only occur outside of QML usage, but 'should' is not the same as 'is'), meanwhile if it's in a subprocess and it does something bad the subprocess dies but plasma-shell still runs. Same deal with hangs but either threads or processes should work (These on the other hand can happen in either QML or outside).
And this isn't my idea at all Martin, this is one of the long standing criticisms of Plasma that has enough support for Aaron to have blogged about it, that I just happen to agree with, and is a generally solved problem with many examples in the wild.
Edit: Also differentiating between A plasmoid and the data engine that it uses is a differentiation without a difference, as a plasmoid is a complete program which includes a QML scene and potentially a data engineLast edited by Luke_Wolf; 21 November 2015, 06:27 AM.
Comment
-
Originally posted by Luke_Wolf View Post
Oh I don't know, the fact that for every other software that has done this, Chromium being a very relevant example that Aaron himself highlighted, it's solved the exact issues that Plasma 5 has (which it inherited from Plasma 1), which is to say crashes and hangs suddenly become isolated to the component that hung or crashed instead of taking down the whole structure. The only problem being that it's slower and more memory intensive to do it this way because processes are heavy... Which was Aaron's rationale against doing it that way. So unless you have something new to add to the discussion, according to Aaron's own words it is a compromise in favour of speed and memory consumption over safety.
Originally posted by Luke_Wolf View PostFurthermore pray tell exactly how breaking plasmoids out into subprocesses wouldn't isolate crashes and hangs, the reason that plasma 5 crashes is that Plasmoid X does something bad with memory which then causes the OS to terminate the plasma-shell process (whether that's in the QML scene itself or in the data engine, which admittedly in principle these should only occur outside of QML usage, but 'should' is not the same as 'is'), meanwhile if it's in a subprocess and it does something bad the subprocess dies but plasma-shell still runs. Same deal with hangs but either threads or processes should work (These on the other hand can happen in either QML or outside).
Originally posted by Luke_Wolf View PostEdit: Also differentiating between A plasmoid and the data engine that it uses is a differentiation without a difference, as a plasmoid is a complete program which includes a QML scene and potentially a data engine
- Likes 1
Comment
Comment