A modern groupware client based on QtQuick and Sink.
The code can be found at: git://anongit.kde.org/kube
The documentation can be found at: http://kube.readthedocs.io/en/latest/
Also, see https://kube-project.com
A modern groupware client based on QtQuick and Sink.
The code can be found at: git://anongit.kde.org/kube
The documentation can be found at: http://kube.readthedocs.io/en/latest/
Also, see https://kube-project.com
This has gotten some more attention:
We have read-only memory hole support and decrypt messages on sync for local search support.
Not really a problem in practice, and a solution would be search.
We're using flatpak
Also, support configuring starttls in the UI (necessary for some services).
@mbohlender I've taken the liberty of adding you here. I appreciate you're pretty busy.
Initial support for syntaxhighlighting based on sonnet is now available.
I'm closing this due to inactivity, feel free to reopen if it becomes relevant again.
The reason was that we had a concurrent read-only transaction so we ended up accumulating a lot of free pages. Fixed in 0dc8aa249d063a3d6eaa248950c57ed5a1709524
Thanks that did the trick.
OK, I have reverted the commit in master now. Sink tests pass again.
To be honest I think it makes most sense to revert back to default constructing T for the time being.
There's no easy way how to fix this without reverting back to default-constructing T in Future<T>::Future().
It's not exactly the lifetime- it's a more deep-rooted issue with error handling.
In T12315#214103, @dvratil wrote:Generally, I'm wondering if I should deprecate this API and introduce a promise-future based API, where, instead of being passed a future from KAsync, the continuation would construct a Promise object internally a return a Future that KAsync would wait for....internally the continuation would own the Promise - it's closer to the common promise-future pattern and solves the lifetime issue, since the Promise is owned by the continuation, rather than by KAsync (which only holds the Future).
In T12315#214101, @dvratil wrote:Hmm, I believe the bug might be in the Sink code. Here specifically, it's ResourceControl::flush():
The function registers two callbacks, both operating on the future reference. When the resource crashes (happens to me, I don't know if it's part of th etest), then sendFlushCommand fails, so future.setError is called (line 111). However, around the same time a notification is received with information about the crashed resource, invoking the lambda passed to registerHandler function, which then also calls future.setError() (line 98) - depending on which happens first, the future is finished at that point and completes the execution, which may delete the Future object, leaving the other lambda with a dangling reference....
Generally, I'm wondering if I should deprecate this API and introduce a promise-future based API, where, instead of being passed a future from KAsync, the continuation would construct a Promise object internally a return a Future that KAsync would wait for....internally the continuation would own the Promise - it's closer to the common promise-future pattern and solves the lifetime issue, since the Promise is owned by the continuation, rather than by KAsync (which only holds the Future).
I can probably solve the life-time of the future, however you are still calling setError twice on it, which should be undefined behavior - or, following what std::future does, would, well, not throw (because Qt), but might as well assert.
Hmm, I believe the bug might be in the Sink code. Here specifically, it's ResourceControl::flush():
tests/notificationtest in sink will produce a similar crash.
I have rebuilt the flatpak completely and can reproduce the crash. Also, I can reproduce the crash outside of the flatpak again, not sure what I did above.
Ever since I have rebuilt a with -fsanitize=address I can no longer reproduce outside of the flatpak, so there's a chance that the fault is with flatpaks internal build chaching that somehow results in something that crashes (I can't think of a reasonable scenario, but who knows).
I'll try to completely rebuild the flatpak as well and see if this fixes the issue.
Nothing very obvious from the address sanitizer so far, but I also haven't managed to run kube with it yet (only sinksh).
I'll try that. Next week is fine, no hurry.
Looks like some memory issue...could you try compiling with -fsanitize=address? I won't get to look into it properly before some time next week, sorry.
FWIW; I have attempted but failed to reproduce this in a kasync testcase. I can reproduce it by starting latest kube with latest sink and latest kasync, and I can reproduce the crash in both flatpak (which I have now reverted to kasync 0.3.0), and a locally built kube.
See the calendar for a model how this could be implemented.
I managed to get rid of this crash with a patch to xapian (https://github.com/cmollekopf/xapian-core/commit/6061b69c4b2f6b9d310558df1b285b5125364de8) that I have yet to upstream (don't know if they'd accept it since it seems like a compiler bug).