element-hq / element-web

A glossy Matrix collaboration client for the web.
https://element.io
Apache License 2.0
10.74k stars 1.89k forks source link

[riot.im/app] Cannot login #7769

Closed andreygursky closed 4 years ago

andreygursky commented 5 years ago

Description

I cannot login anymore.

Steps to reproduce

I do not actively use matrix/riot (because e2e is still not yet enabled by default, which is not a big problem for me, but could be a problem for my communication partners). Since some time I noticed a spinning circle right after opening riot.im/app, which doesn't go away but didn't consider this as a critical issue. I use riot for audio calls (they are implemented incredibly good! with 64 kbit/s bandwidth connection a once established call sounds very good and doesn't break even for 2 hours). Now I needed to perform a call and it failed. I logged out and that's it. It is not possible to login anymore. [offtopic]Tried meet.jit.si. Calls break every 5 minutes and it takes up to 4 minutes to establish it again, thus it is not a workaround (considering only open source)[/offtopic]

There are numerous errors shown in developer console:

Failed to open log database: AbortError
Failed to initialise rageshake: Error: Failed to open log database: AbortError
GET https://riot.im/app/config.riot.im.json 404
Unhandled rejection TypeError: Cannot read property 'name' of undefined

Details: riot.im-1543786314065-for-upload.log

Version information

For the web app:

bwindels commented 5 years ago

Quick investigation: Indexeddb seems unhappy, throwing AbortError, which we don't really anticipate. This is the error you get when calling abort() on a transaction, but we don't do that anywhere for the log database? And this is the error we get when calling indexedDb.open(...) ...

Unhandled rejection TypeError: Cannot read property 'name' of undefined    at e.<anonymous> (https://riot.im/app/bundles/8a633eac616121340fa1/bundle.js:1:65670)    at E

This seems to correspond to MatrixClientPeg.js:121, not sure what that's about. Potentially related to Handle crypto db version upgrade ?

bwindels commented 5 years ago

@andreygursky Could you please try to reproduce the problem on https://riot.im/develop and if you do hit the problem again, hit the "Submit debug logs" button at the bottom of the settings page. Thanks!

Also, are you using incognito mode or do you have any extensions installed that could tamper with indexeddb, like any of these...?

andreygursky commented 5 years ago

Chromium is without extensions and normal mode.

I've tried /develop. On every page reload there are the same errors:

Using WebAssembly Olm
bundle.js:sourcemap:130280 Failed to open log database: AbortError
bundle.js:sourcemap:130280 Failed to initialise rageshake: Error: Failed to open log database: AbortError

Is there any small script, doing similar initialization (with indexeddb) as riot-web?

andreygursky commented 5 years ago

I was able to load the /develop version and successfully login and then also stable /app. Just wondering what commit was it.  Now it looks:

rageshake.js:99 Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.
rageshake.js:99 Using WebAssembly Olm
rageshake.js:99 set language to en-us
index.js:218 GET https://riot.im/app/config.riot.im.json 404
rageshake.js:99 Vector starting at https://riot.im/app/
rageshake.js:99 Restoring session for ...
bwindels commented 5 years ago

Hey @andreygursky, thanks for the follow-up. Great you've managed to login. Now that you got that far, could you try to hit the "Submit debug logs" button at the bottom of the settings page? That way we should also be able to see in greater detail what went wrong before.

andreygursky commented 5 years ago

@bwindels, since I was able to login all works good as before (including audio calls). Is there any timeline of what develop (and stable) versions of riot-web, matrix-js-sdk, matrix-react-sdk are online on riot.im?

I'd be glad to supply logs (for working case) but I need to be able to read them before and pre-moderate. Is it possible?

BTW, perhaps related https://github.com/vector-im/riot-web/issues/7730 and https://github.com/vector-im/riot-web/issues/7761.

bwindels commented 5 years ago

Hi @andreygursky, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.

You can see the logs, but it's not convenient. They are stored in the indexeddb logs database, and are kept across sessions, hence it would be useful to see what might have happened before. You can use the storage tab in developer tools of FF or Chrome to view the contents of indexeddb.

I understand if you are still uncomfortable with this though and prefer not to send them.

7761 might be related, but there's not enough information on it to tell.

andreygursky commented 5 years ago

@bwindels, thanks for your patience! If nobody else has already submitted a feature request about adding downloading/saving logs to file, I'll do it.

I looked into IndexedDB logs. There are only about 100 entries and the oldest one is dated at about the moment I could successfully login.

2018-12-08T12:26:39.110Z I riot-web closing

The next entry:

2018-12-08T12:26:00.372Z I Starting load of AsyncWrapper for modal
2018-12-08T12:26:06.098Z I stopping MatrixClient
2018-12-08T12:26:06.101Z I SyncApi.stop
2018-12-08T12:26:06.104Z I stopping OutgoingRoomKeyRequestManager
2018-12-08T12:26:06.107Z I Removing indexeddb instance: matrix-js-sdk:riot-web-sync
2018-12-08T12:26:06.108Z I Removing indexeddb instance: matrix-js-sdk:crypto
2018-12-08T12:26:06.111Z I Sync no longer running: exiting
2018-12-08T12:26:06.128Z I newscreen login
2018-12-08T12:26:06.267Z I versionchange for indexeddb undefined: closing
2018-12-08T12:26:06.564Z I Removed indexeddb instance: matrix-js-sdk:riot-web-sync
2018-12-08T12:26:06.565Z I Deleted indexeddb data.
2018-12-08T12:26:06.857Z I Removed indexeddb instance: matrix-js-sdk:crypto

and then

2018-12-08T12:25:28.932Z I LL: got 2 members from server for room ...
...

I'm wondering how they got cleared.

andreygursky commented 5 years ago

Now noticed, they are not exactly sorted. Thus there were some log entries before:

"Sat Dec 08 2018 13:15:08 GMT+0100 (Central European Standard Time) ::: Log database was created."
2018-12-08T12:15:07.917Z W Warning: Accessing createClass via the main React package is deprecated, and will be removed in React v16.0. Use a plain JavaScript class instead. If you're not yet ready to migrate, create-react-class v15.* is available on npm as a temporary, drop-in replacement. For more info see https://fb.me/react-create-class
2018-12-08T12:15:07.953Z W Warning: Accessing PropTypes via the main React package is deprecated, and will be removed in  React v16.0. Use the latest available v15.* prop-types package from npm instead. For info on usage, compatibility, migration and more, see https://fb.me/prop-types-docs
2018-12-08T12:15:08.431Z I Using WebAssembly Olm
2018-12-08T12:15:08.524Z I Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.
2018-12-08T12:22:17.645Z I Vector starting at https://riot.im/develop/
2018-12-08T12:22:17.693Z I No previous session found.
2018-12-08T12:22:17.702Z I Doing guest login on https://matrix.org
2018-12-08T12:22:18.547Z I Registered as guest: ...
bwindels commented 5 years ago

Thanks @andreygursky for that. Without further information about the original problem, and with the problem having being resolved, I'm going to close this issue. Please re-open if it happens again or you've got more information. Thank you as well for your patience :)

venatiodecorus commented 5 years ago

I'm running into this issue on the latest version. Cannot login in Chrome, getting the same errors reported by OP. I am able to login in Firefox though. This is happening for me on multiple riot instances.

ara4n commented 5 years ago

@venatiodecorus can you provide the full JS console logs please so we can compare the errors?

venatiodecorus commented 5 years ago
Navigated to https://riot.oct0p.us/
rageshake.js:99 Starting watcher for RoomList.orderByImportance@<null room>
rageshake.js:99 Starting watcher for feature_custom_tags@<null room>
rageshake.js:99 Failed to open log database: AbortError
rageshake.js:99 Failed to initialise rageshake: Error: Failed to open log database: AbortError
rageshake.js:99 wasm streaming compile failed: TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.
rageshake.js:99 falling back to ArrayBuffer instantiation
rageshake.js:99 Using WebAssembly Olm
rageshake.js:99 set language to en-us
rageshake.js:99 Using Web platform
index.js:218 GET https://riot.oct0p.us/config.riot.oct0p.us.json 404 (Not Found)
rageshake.js:99 Vector starting at https://riot.oct0p.us/
rageshake.js:99 Restoring session for @octo:matrix.oct0p.us
rageshake.js:99 setLoggedIn: mxid: @octo:matrix.oct0p.us deviceId: MNVWKKBCGW guest: false hs: https://matrix.oct0p.us
rageshake.js:99 Session persisted for @octo:matrix.oct0p.us
rageshake.js:99 Lifecycle: Starting MatrixClient
rageshake.js:99 IndexedDBStore.startup: connecting to backend
2
indexeddb-remote-backend.js:151 [Report Only] Refused to create a worker from 'https://riot.oct0p.us/bundles/6155e5c…/indexeddb-worker.js' because it violates the following Content Security Policy directive: "worker-src 'none'".
rageshake.js:99 MatrixClientPeg: waiting for MatrixClient store to initialise
indexeddb-remote-backend.js:151 POST about:blank net::ERR_UNKNOWN_URL_SCHEME
rageshake.js:99 IndexedDB worker is ready
indexeddb-local-backend.js:178 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:202 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:204 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:592 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:612 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:599 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:619 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:233 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:99 IndexedDBStore.startup: loading presence events
rageshake.js:99 IndexedDBStore.startup: processing presence events
rageshake.js:99 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:99 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:99 Unable to load session TypeError: Cannot read property 'name' of undefined
    at e.<anonymous> (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:9414)
    at E (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:23:165499)
    at Generator._invoke (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:23:165287)
    at Generator.e.(anonymous function) [as throw] (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:23:165678)
    at Generator.c (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:141515)
    at p._promiseRejected (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:98771)
    at R._settlePromise (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:115672)
    at R._settlePromise0 (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:116245)
    at R._settlePromises (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:117486)
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:71047
From previous event:
    at R.U [as _captureStackTrace] (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:84535)
    at new p (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:97409)
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:100502
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:61:662685
    at Object.<anonymous> (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:61:665468)
    at Object.<anonymous> (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:61:665474)
    at o (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:318)
    at Object.<anonymous> (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:61:607232)
    at o (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:318)
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:2023
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:2035
rageshake.js:99 Starting load of AsyncWrapper for modal
rageshake.js:99 Presence: online
venatiodecorus commented 5 years ago

i've been able to load riot in an incognito window, so this is something to do with my chrome instance i think actually. but i've tried clearing out all data for riot and i still cannot get it to load regularly. i've tried disabling all extensions etc.

bwindels commented 5 years ago

https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:9414 corresponds to MatrixClientPeg.js:122.

bwindels commented 5 years ago

Looks like it's another occurrence of https://github.com/matrix-org/matrix-js-sdk/pull/847#issuecomment-467781807 I'll have a look at implementing the suggested fix there.

@venatiodecorus Looks like something is going wrong while restoring your crypto storage from IndexedDB when starting Riot. Unfortunately we have a bug where we swallow the root cause, (which caused the error visible in your logs), so we can't know what caused the issue for you at the moment.

I'll try to get a fix in for the bug that masks the root cause soon, so you could update your installation of riot and if you're still seeing the issue after that (which I expect) re-post your logs here so we can see what is causing it for you.

bwindels commented 5 years ago

@venatiodecorus we'll try to get this into tomorrows 1.0.2 release of riot. As said, feel free to re-report your logs after updating your installation to that.

venatiodecorus commented 5 years ago

@bwindels thank you i'll keep an eye out for that and will get back to you

bwindels commented 5 years ago

1.0.2 is released now, with fix for the error swallowing included.

tanius commented 5 years ago

An error with the same error message and same scenario as for the OP is happening to me on login.

Environment:

As it does not happen in incognito mode, it must be something about my browser instance / data, but what? What else can I disable / reset to create the same environment as in incognito mode?

Partial console logs from the /app version:

connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:107 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:107 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:107 Unhandled rejection TypeError: Cannot read property 'name' of undefined
    at e.<anonymous> (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:9414)
    at E (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:168903)
    at Generator._invoke (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:168691)
    at Generator.e.(anonymous function) [as throw] (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:169082)
    at Generator.c (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:141515)
    at p._promiseRejected (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:98771)
    at R._settlePromise (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:115672)
    at R._settlePromise0 (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:116245)
    at R._settlePromises (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:117486)
    at https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:71047From previous event:
    at R.U [as _captureStackTrace] (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:84535)
    at R._then (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:110203)
    at R.then (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:108551)
    at Object.onPasswordLogin (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:106:207979)
    at t.value (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:106:244567)
    at Object.o (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:39:42752)
    at s (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:39:40953)
    at Object.executeDispatchesInOrder (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:39:41682)
    at f (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:175791)
    at p (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:175917)
    at Array.forEach (<anonymous>)
    at e.exports (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:61:150374)
    at Object.processEventQueue (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:177321)
    at https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:63:37537
    at Object.handleTopLevel [as _handleTopLevel] (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:63:37559)
    at p (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:63:58639)
    at u.perform (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:30:84838)
    at Object.batchedUpdates (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:61:165483)
    at Object.batchedUpdates (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:45542)
    at dispatchEvent (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:63:59420)

Partial console logs from the /develop version:

connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Unhandled rejection TypeError: Cannot read property 'name' of undefined
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/2ed939d…/bundle.js:57287:49)
    at tryCatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:159547:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159781:22)
    at Generator.prototype.(anonymous function) [as throw] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159599:21)
From previous event:
    at MatrixClientPeg.start (https://riot.im/develop/bundles/2ed939d…/bundle.js:57326:29)
    at _callee4$ (https://riot.im/develop/bundles/2ed939d…/bundle.js:56156:81)
    at tryCatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:159547:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159781:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159599:21)
From previous event:
    at startMatrixClient (https://riot.im/develop/bundles/2ed939d…/bundle.js:56173:22)
    at _callee3$ (https://riot.im/develop/bundles/2ed939d…/bundle.js:56113:55)
    at tryCatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:159547:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159781:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159599:21)
From previous event:
    at _doSetLoggedIn (https://riot.im/develop/bundles/2ed939d…/bundle.js:56127:22)
    at Object.setLoggedIn [as onLoggedIn] (https://riot.im/develop/bundles/2ed939d…/bundle.js:56413:12)
    at https://riot.im/develop/bundles/2ed939d…/bundle.js:86162:26
From previous event:
    at Object.onPasswordLogin (https://riot.im/develop/bundles/2ed939d…/bundle.js:86161:90)
    at PasswordLogin.onSubmitForm (https://riot.im/develop/bundles/2ed939d…/bundle.js:89769:24)
    at HTMLUnknownElement.boundFunc (https://riot.im/develop/bundles/2ed939d…/bundle.js:353754:9)
    at Object../node_modules/react-dom/lib/ReactErrorUtils.js.ReactErrorUtils.invokeGuardedCallback (https://riot.im/develop/bundles/2ed939d…/bundle.js:353760:16)
    at executeDispatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:347434:21)
    at Object.executeDispatchesInOrder (https://riot.im/develop/bundles/2ed939d…/bundle.js:347457:5)
    at executeDispatchesAndRelease (https://riot.im/develop/bundles/2ed939d…/bundle.js:346849:22)
    at executeDispatchesAndReleaseTopLevel (https://riot.im/develop/bundles/2ed939d…/bundle.js:346860:10)
    at Array.forEach (<anonymous>)
    at forEachAccumulated (https://riot.im/develop/bundles/2ed939d…/bundle.js:360161:9)
    at Object.processEventQueue (https://riot.im/develop/bundles/2ed939d…/bundle.js:347060:7)
    at runEventQueueInBatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:353792:18)
    at Object.handleTopLevel [as _handleTopLevel] (https://riot.im/develop/bundles/2ed939d…/bundle.js:353802:5)
    at handleTopLevelImpl (https://riot.im/develop/bundles/2ed939d…/bundle.js:353887:24)
    at ReactDefaultBatchingStrategyTransaction.perform (https://riot.im/develop/bundles/2ed939d…/bundle.js:359387:20)
    at Object.batchedUpdates (https://riot.im/develop/bundles/2ed939d…/bundle.js:353515:26)
    at Object.batchedUpdates (https://riot.im/develop/bundles/2ed939d…/bundle.js:357373:27)
    at dispatchEvent (https://riot.im/develop/bundles/2ed939d…/bundle.js:353962:20)
jryans commented 5 years ago

Hmm... It would seem the original error is still missing from the log. We may need to add additional logging to the crypto startup path to trace down which step is actually failing here.

dbkr commented 5 years ago

I have added some more logging that's now landed on /develop - could you try again and see if the logs are any more informative?

tanius commented 5 years ago

Ok, I tried again on the current /develop version, see the new logs for a login attempt below.

I should add that the logs might be incomplete because now I also get the "Failed to open log database" error reported by the OP in the very first post above:

rageshake.js:61 Failed to open log database: AbortError
consoleObj.(anonymous function) @ rageshake.js:61
rageshake.js:61 Failed to initialise rageshake: Error: Failed to open log database: AbortError
consoleObj.(anonymous function) @ rageshake.js:61

That is the result of me deleting all of the application's data under "Web Developer Tools → Application → Clear Storage → Clear site data" to try fixing the login issues. I assumed it would re-create everything it needs on next login, but apparently the log database does not get recreated?

Also potentially relevant re. the "Unable to initialise e2e" log message below: before this started to happen, I started the logout process and the "key backup" process offered in there, but then decided against it and just downloaded the keys and logged out. However, since login still works from incognito mode, an incomplete key backup is certainly not the only problem, if at all.

The logs for a login attempt look like this now (I marked parts I deleted with ***redacted***):

newscreen login
[Violation] 'setTimeout' handler took 126ms
[Violation] Forced reflow while executing JavaScript took 47ms
/develop/#/login:1 [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq) <input type=​"password" class id=​"mx_PasswordLogin_password" name=​"password" label=​"Password" value=​"***redacted***" placeholder=​"Password">​
rageshake.js:61 Overrode homeserver setting with https://***redacted***:8448/ from login response
rageshake.js:61 setLoggedIn: mxid: @***redacted***:***redacted***.com deviceId: NJCOLJBWUJ guest: false hs: https://***redacted***:8448/
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @***redacted***
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...
rageshake.js:61 Unable to initialise e2e undefined
    consoleObj.(anonymous function) @ rageshake.js:61
    _callee$ @ MatrixClientPeg.js:133
    tryCatch @ runtime.js:64
    invoke @ runtime.js:298
    prototype.(anonymous function) @ runtime.js:116
    tryCatcher @ bluebird.js:5278
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3363
    Promise._settlePromise0 @ bluebird.js:3400
    Promise._settlePromises @ bluebird.js:3477
    (anonymous) @ bluebird.js:177
    Promise.then (async)
    schedule @ bluebird.js:4506
    Async.settlePromises @ bluebird.js:176
    Promise._reject @ bluebird.js:3444
    Promise._settlePromise @ bluebird.js:3351
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    PromiseSpawn._continue @ bluebird.js:2188
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3361
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    PromiseSpawn._continue @ bluebird.js:2188
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3361
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    PromiseSpawn._continue @ bluebird.js:2188
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3361
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    PromiseSpawn._continue @ bluebird.js:2188
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3361
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._settlePromise @ bluebird.js:3369
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    (anonymous) @ bluebird.js:3271
    txn.onabort @ indexeddb-crypto-store-backend.js:701
rageshake.js:61 MatrixClientPeg: really starting MatrixClient  
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 Got TURN URIs: turn:***redacted*** refresh in 86400 secs
rageshake.js:61 Got push rules
dbkr commented 5 years ago

OK - I think we're getting closer: the transaction is aborting when we're trying to set up the Olm device. I've added more code which should tell us why. @tanius would you mind trying again on riot.im/develop please?

tanius commented 5 years ago

Sure :-) Tried it again on riot.im/develop, see the log output below.

So it seems the log indicates a problem of saving to IndexedDB browser storage ("Error performing indexeddb txn … DOMException: QuotaExceededError"). Since Chrome would ask for a quota before putting something into persistent storage (see) and never does in Riot, this must be about temporary storage only.

So I checked for problems with my browser's temporary storage using Browser Storage Abuser, in both Chrome's incognito mode (where login works) and in normal mode (where login fails). Results:

So that's why the IndexedDB query in normal mode fails. No idea how exactly Chrome calculates the 24.5 kiB limit internally, but Chrome basically hands out quotas of (approximately) zero once the free mass storage drops below 2 GiB (source). That applies in my case, with 825 MiB free mass storage right now :disappointed:. The different quota of 96.5 MiB in Incognito mode also makes sense:

Opening a web app in Chrome's Incognito mode imposes a special restriction on storage that doesn't apply to normal browsing contexts: there's a quota limit of around 100 megabytes, regardless of free space available on your device. (source)

In any case, it seems that Riot would need code to fail gracefully (or maybe to proceed without E2E enabled) when the quota for temporary storage is exceeded. Quite probably, the OP's issue was also related to the quota for local storage, as the OP reported the issue went away on its own – like, as a side effect of cleaning up some files on the mass storage.


Logs of a failed login attempt when using the newest riot.im/develop version:

[…]
rageshake.js:61 Failed to initialise rageshake: Error: Failed to open log database: AbortError
[…]
rageshake.js:61 Vector starting at https://riot.im/develop/#/login
rageshake.js:61 newscreen login
[Violation] 'setTimeout' handler took 87ms
/develop/#/login:1 [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): […]
rageshake.js:61 Overrode homeserver setting with https://***redacted***:8448/ from login response
rageshake.js:61 setLoggedIn: mxid: @***redacted*** deviceId: REHERPLLRV guest: false hs: https://***redacted***:8448/
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @***redacted***
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...

rageshake.js:61 Error performing indexeddb txn

    Event {
        isTrusted: true, 
        type: "abort", 
        target: IDBTransaction, 
        currentTarget: IDBTransaction, 
        eventPhase: 2, 
        […]
        srcElement: IDBTransaction
            db: IDBDatabase {
                name: "matrix-js-sdk:crypto", 
                version: 7, 
                objectStoreNames: DOMStringList, 
                onabort: null, 
                onclose: null, …
            }
            […]
        […]
    }

rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError

        (No stack trace)
    From previous event:
        at promiseifyTxn (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:18541:12)
        at Backend.doTxn (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:18469:27)
        at https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:19203:32
    From previous event:
        at IndexedDBCryptoStore.doTxn (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:19202:36)
        at _callee2$ (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:9013:67)
        at tryCatch (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50391:40)
        at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50625:22)
        at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50443:21)
    From previous event:
        at _initialiseAccount (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:9034:22)
        at OlmDevice._callee$ (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:9172:51)
        at tryCatch (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50391:40)
        at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50625:22)
        at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50443:21)
    From previous event:
        at Crypto._callee$ (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:14140:67)
    From previous event:
        at MatrixClient._callee$ (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:3258:58)
        at tryCatch (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50391:40)
        at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50625:22)
        at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:50443:21)
    From previous event:
        at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:57670:81)
        at tryCatch (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:160331:40)
        at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:160565:22)
        at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:160383:21)
        at Generator.tryCatcher (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:165973:23)
        at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:163106:49)
        at Promise._settlePromise (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:164176:26)
        at Promise._settlePromise0 (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:164216:10)
        at Promise._settlePromises (https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:164296:18)
        at https://riot.im/develop/bundles/568d456ab128634d0cfb/bundle.js:161194:25

    consoleObj.(anonymous function) @ rageshake.js:61
    _callee$ @ MatrixClientPeg.js:133
    tryCatch @ runtime.js:64
    invoke @ runtime.js:298
    prototype.(anonymous function) @ runtime.js:116
    tryCatcher @ bluebird.js:5278
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3363
    Promise._settlePromise0 @ bluebird.js:3400
    Promise._settlePromises @ bluebird.js:3477
    (anonymous) @ bluebird.js:177
    Promise.then (async)
    schedule @ bluebird.js:4506
    Async.settlePromises @ bluebird.js:176
    Promise._reject @ bluebird.js:3444
    Promise._settlePromise @ bluebird.js:3351
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    PromiseSpawn._continue @ bluebird.js:2188
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3361
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    PromiseSpawn._continue @ bluebird.js:2188
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3361
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    PromiseSpawn._continue @ bluebird.js:2188
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3361
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    PromiseSpawn._continue @ bluebird.js:2188
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3361
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._settlePromise @ bluebird.js:3369
    Promise._settlePromise0 @ bluebird.js:3399
    Promise._settlePromises @ bluebird.js:3475
    (anonymous) @ bluebird.js:175
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    (anonymous) @ bluebird.js:3271
    txn.onabort @ indexeddb-crypto-store-backend.js:706

rageshake.js:61 MatrixClientPeg: really starting MatrixClient
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 Got TURN URIs: turn:***redacted*** refresh in 86400 secs
rageshake.js:61 Got push rules
rageshake.js:61 Presence: online
rageshake.js:61 Presence: unavailable
turt2live commented 5 years ago

Is your primary disk full? Chrome limits websites to roughly 10% of free disk space (up to some amount), so if your disk is nearly full then a few hundred kb isn't unreasonable from Chrome's perspective.

tanius commented 5 years ago

@turt2live My primary disk still has 825 MiB free space available, but Chrome has an additional "should remain available" limit of at least 2 GiB of disk space, and once that's hit it will hand out quotas of 0 (or rather "approximately zero" as it still was 24.5 kiB here) for Temporary Storage. That must be what we're seeing here.

(I had to read up about this behavior in Chrome, as it was new to me. And it was not well documented, so I summarized it all in this answer on StackOverflow.)

dbkr commented 5 years ago

Ah! This explains a lot. We are separately looking at behaviour when storage runs out so this will tie into this. I'm surprised if the app doesn't continue without e2e in this scenario though, unless there's a separate error later that is causing more breakage.

jryans commented 5 years ago

If we had storage estimation and persistent storage, I think Riot would be able to respond more cleanly here.

jryans commented 5 years ago

@tanius What's the behaviour you currently see on /develop? Does Riot come to a halt once you hit the Unable to initialise e2e DOMException: QuotaExceededError error, or does it now allow you to finish logging in and use the app?

With the changes we made while trying to diagnose this issue, it seems like you should be able to finish login, but I'd like to know what actually happens for you in practice.

tanius commented 5 years ago

With the changes we made while trying to diagnose this issue, it seems like you should be able to finish login

I just tried again on riot.im/develop, but it still does not work. After the click on the "Sign In" button, I only see a white screen with a centered spinning wheel, and a blue link "Logout" below that. The log contains no additional errors / exceptions and "MatrixClientPeg: MatrixClient started" at the bottom, so maybe not another error but "just" a rendering issue?

Full new log below, just omitting deprecation warnings, object dumps and stacktraces this time, as I posted everything relevant of that above already.


rageshake.js:61 Starting watcher for RoomList.orderByImportance@<null room>
rageshake.js:61 Starting watcher for feature_custom_tags@<null room>
rageshake.js:61 Failed to open log database: AbortError
rageshake.js:61 Failed to initialise rageshake: Error: Failed to open log database: AbortError
rageshake.js:61 Using WebAssembly Olm
rageshake.js:61 set language to en-us
rageshake.js:61 Using Web platform
index.js:219 GET https://riot.im/develop/config.riot.im.json 404
rageshake.js:61 Vector starting at https://riot.im/develop/#/login
rageshake.js:61 newscreen login
[Violation] 'setTimeout' handler took 86ms
/develop/#/login:1 [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq) <input …>​
rageshake.js:61 Overrode homeserver setting with https://***redacted***/ from login response
rageshake.js:61 setLoggedIn: mxid: @***redacted*** deviceId: ENJHYHBKYP guest: false hs: https://***redacted***/
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @***redacted***
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 Presence: online
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...
rageshake.js:61 Error performing indexeddb txn 
rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError
rageshake.js:61 MatrixClientPeg: really starting MatrixClient
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 Got TURN URIs: turn:***redacted*** refresh in 86400 secs
rageshake.js:61 Got push rules

    [2-3 minutes passed here before the next message below appears]

Presence: unavailable
jryans commented 5 years ago

Okay, thanks for collecting all these logs for us. 😁 I am going to try to simulate your situation locally as best as I can.

jryans commented 5 years ago

@tanius We've made some some more changes to riot.im/develop just now that I am hoping will improve this case so that you can actually login and use the app.

Could you please retest? If it fails, please capture logs as before. Thanks for your help and patience as we work this out!

tanius commented 5 years ago

Just tested it again. Results are mixed :)

I put all the detailed logs below, but here's my hypothesis: there is code now for the case where a previously created IndexedDB database is no longer found. I can trigger this by deleting the IndexedDB databases and reloading riot.im/develop. In that case, I see a dialog saying "Missing session data. Some session data, including encrypted message keys, is missing. […] Your browser likely removed this data when running low on disk space." So far so good.

But when I log out and in again as instructed, I then see the same error as before: "rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError". This is because (1) Riot tries to re-create the IndexedDB databases as usual and (2) the browser does not give the live Riot app enough storage quota to do so. Riot will be able to create the database structure, but not to save any meaningful amount of content to it before the "QuotaExceededError" error happens.

The safe behavior for a QuotaExceededError (or perhaps before that, when receiving ridiculously low storage quotas for IndexedDB) seems to be to not use IndexedDB at all. It seems Riot can do that, because when I delete the IndexedDB databases while being logged in (in incognito mode to make it work here …) and use Riot without reloading it, I will see a console message saying "IndexedDBStore failure, degrading to MemoryStore InvalidStateError: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.". So if Riot would do the same thing as a reaction to "QuotaExceededError", login with low disk space should start to work.


Log messages for a login attempt on current riot.im/develop. Workflow was as follows:

  1. In an open riot.im/develop tab, open web developer tools, go to tab "Application" and do the "Clear Storage" procedure (with all types of storage checked for clearing).

  2. Click Shift+Reload in the browser to load the most recent version of Riot, disregarding any cached files. This will load https://riot.im/develop/ and then forward to https://riot.im/develop/#/welcome.

  3. When the https://riot.im/develop/#/welcome has loaded, click on "Sign In".

  4. Fill the signin form and click "Sign In".

Note that with this workflow, there are two separate occurrences of the "Unable to initialise e2e DOMException: QuotaExceededError" error message:

  1. The first during the page load for https://riot.im/develop/#/welcome.
  2. The second after filling the login form and clicking "Sign in". Which is the only one I reported so far in the other logs up the thread, because I was always starting directly from https://riot.im/develop/#/login there.

I omitted some unrelated stacktraces, and masked information related to our server and usernames as ***redacted***.

[…]
rageshake.js:61 Starting watcher for RoomList.orderByImportance@<null room>
rageshake.js:61 Starting watcher for feature_custom_tags@<null room>
rageshake.js:61 Failed to open log database: AbortError
    [stacktrace omitted]
rageshake.js:61 Failed to initialise rageshake: Error: Failed to open log database: AbortError
    [stacktrace omitted]
rageshake.js:61 Vector starting at https://riot.im/develop/#/welcome
rageshake.js:61 No previous session found.
rageshake.js:61 Doing guest login on https://matrix.org
rageshake.js:61 Registered as guest: @1893448:matrix.org
rageshake.js:61 setLoggedIn: mxid: @1893448:matrix.org deviceId: guest_device guest: true hs: https://matrix.org
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @1893448:matrix.org
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 newscreen welcome
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...
rageshake.js:61 Error performing indexeddb txn Event {isTrusted: true, type: "abort", target: IDBTransaction, currentTarget: IDBTransaction, eventPhase: 2, …}
rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError
    (No stack trace)
From previous event:
    at promiseifyTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:18552:12)
    at Backend.doTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:18480:27)
    at https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:19214:32
From previous event:
    at IndexedDBCryptoStore.doTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:19213:36)
    at _callee2$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9013:67)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at _initialiseAccount (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9034:22)
    at OlmDevice._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9172:51)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at Crypto._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:14140:67)
From previous event:
    at MatrixClient._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:3258:58)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:57802:81)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:160817:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:161051:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:160869:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:166459:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:163592:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164662:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164702:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164782:18)
    at https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:161680:25

    consoleObj.(anonymous function) @ rageshake.js:61
    _callee$ @ MatrixClientPeg.js:136
    tryCatch @ runtime.js:64
    invoke @ runtime.js:298
    prototype.(anonymous function) @ runtime.js:116
    tryCatcher @ bluebird.js:5278
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3363
    Promise._settlePromise0 @ bluebird.js:3400
    Promise._settlePromises @ bluebird.js:3477
    (anonymous) @ bluebird.js:177
    Promise.then (async)
    [… abbreviating the stacktrace here …] 
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    (anonymous) @ bluebird.js:3271
    txn.onabort @ indexeddb-crypto-store-backend.js:706

rageshake.js:61 MatrixClientPeg: really starting MatrixClient
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 MatrixClient sync state => PREPARED
rageshake.js:61 Updating room sorting algorithm: sortByImportance=true
rageshake.js:61 Generating initial room lists
rageshake.js:61 MatrixClient sync state => SYNCING
indexeddb-local-backend.js:437 Persisting sync data up to  s904545134_757247379_126763_269510244_137469433_670095_21529709_13193894_40820
rageshake.js:61 Routing URL  https://riot.im/develop/#/login
rageshake.js:61 newscreen login
[Violation] 'setTimeout' handler took 81ms
/develop/#/login:1 [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): […]
rageshake.js:61 Overrode homeserver setting with https://***redacted***/ from login response
rageshake.js:61 stopping MatrixClient
rageshake.js:61 SyncApi.stop
rageshake.js:61 setLoggedIn: mxid: @***redacted*** deviceId: TKFJUOKYMN guest: false hs: https://***redacted***/
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Sync no longer running: exiting
rageshake.js:61 versionchange for indexeddb undefined: closing
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @***redacted***
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...
rageshake.js:61 Error performing indexeddb txn Event {isTrusted: true, type: "abort", target: IDBTransaction, currentTarget: IDBTransaction, eventPhase: 2, …}
rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError
    (No stack trace)
From previous event:
    at promiseifyTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:18552:12)
    at Backend.doTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:18480:27)
    at https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:19214:32
From previous event:
    at IndexedDBCryptoStore.doTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:19213:36)
    at _callee2$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9013:67)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at _initialiseAccount (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9034:22)
    at OlmDevice._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9172:51)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at Crypto._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:14140:67)
From previous event:
    at MatrixClient._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:3258:58)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:57802:81)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:160817:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:161051:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:160869:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:166459:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:163592:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164662:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164702:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164782:18)
    at https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:161680:25

    consoleObj.(anonymous function) @ rageshake.js:61
    _callee$ @ MatrixClientPeg.js:136
    tryCatch @ runtime.js:64
    invoke @ runtime.js:298
    prototype.(anonymous function) @ runtime.js:116
    tryCatcher @ bluebird.js:5278
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3363
    Promise._settlePromise0 @ bluebird.js:3400
    Promise._settlePromises @ bluebird.js:3477
    (anonymous) @ bluebird.js:177
    Promise.then (async)
    [… abbreviating the stacktrace here …]
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    (anonymous) @ bluebird.js:3271
    txn.onabort @ indexeddb-crypto-store-backend.js:706

rageshake.js:61 MatrixClientPeg: really starting MatrixClient
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 Got TURN URIs: turn:***redacted*** refresh in 86400 secs
rageshake.js:61 Got push rules
jryans commented 5 years ago

@tanius Thanks again for the update. This isn't quite what I expected, unfortunately... 😓 I was hoping that during regular login, you'd hit the IndexedDBStore failure, degrading to MemoryStore path, but that doesn't seem to have happened, so something else is still preventing you from finishing login.

For your own context, Unable to initialise e2e DOMException: QuotaExceededError is expected for now. The app should still work in general with that error, but E2E functions will be disabled. I'd like to at least get you far enough for login to complete. We can come back around the E2E side after that.

Thanks for documenting the steps you used. Unfortunately, I don't think I'll be able to reproduce your exact situation even with those steps, since it's highly dependent on when the QuotaExceededError is thrown, which is based on internal browser heuristics, disk space, etc. (IndexedDB can throw QuotaExceededErrors any time you interact with it, so it could the 1st time or the 10th or 100th time.) This is why it's so helpful to get these logs from your system, so we can learn more about what's failing for you specifically.

My next step to add additional logs throughout the startup path from the last message you're getting (Got push rules) until the start up sync process completes.

I'll let you know when that's ready for testing.

jryans commented 5 years ago

@tanius riot.im/develop is ready for another attempt whenever you have time. Thanks! 😁

tanius commented 5 years ago

Another round of test & log :-) Login workflow is as before – starting riot.im/develop after deleting all locally stored data incl. cookies etc.. Since you're interested in how far the start up process completes, I paste the logs from the point where I clicked the "Sign in" button.

[…]

rageshake.js:61 MatrixClient sync state => PREPARED
rageshake.js:61 Updating room sorting algorithm: sortByImportance=true
rageshake.js:61 Generating initial room lists
rageshake.js:61 MatrixClient sync state => SYNCING
rageshake.js:61 Starting sync request processing...
indexeddb-local-backend.js:437 Persisting sync data up to  s908467949_757247379_2173922_271245482_138877083_672627_21692765_13267830_41112
rageshake.js:61 Storing sync data...
rageshake.js:61 Sync data stored
rageshake.js:61 Processing sync response...
rageshake.js:61 Starting sync request processing...
rageshake.js:61 Routing URL  https://riot.im/develop/#/login

rageshake.js:61 newscreen login

rageshake.js:61 Storing sync data...
rageshake.js:61 Sync data stored
rageshake.js:61 Processing sync response...
rageshake.js:61 Starting sync request processing...

[… last four messages repeat several times here …]

[… and here is when I pressed "Sign in" …]

rageshake.js:61 Overrode homeserver setting with https://***redacted***/ from login response
rageshake.js:61 stopping MatrixClient
rageshake.js:61 SyncApi.stop
rageshake.js:61 setLoggedIn: mxid: @***redacted*** deviceId: IHWXTDQZSM guest: false hs: https://***redacted***/
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Sync no longer running: exiting
rageshake.js:61 versionchange for indexeddb undefined: closing
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @***redacted***
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...
rageshake.js:61 Error performing indexeddb txn Event {isTrusted: true, type: "abort", target: IDBTransaction, currentTarget: IDBTransaction, eventPhase: 2, …}

rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError
    (No stack trace)
From previous event:
    at promiseifyTxn (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:18565:12)
    at Backend.doTxn (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:18493:27)
    at https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:19227:32
From previous event:
    at IndexedDBCryptoStore.doTxn (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:19226:36)
    at _callee2$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:9026:67)
    at tryCatch (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50651:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50885:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50703:21)
From previous event:
    at _initialiseAccount (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:9047:22)
    at OlmDevice._callee$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:9185:51)
    at tryCatch (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50651:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50885:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50703:21)
From previous event:
    at Crypto._callee$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:14153:67)
From previous event:
    at MatrixClient._callee$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:3271:58)
    at tryCatch (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50651:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50885:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50703:21)
From previous event:
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:57926:81)
    at tryCatch (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:160968:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:161202:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:161020:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:166610:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:163743:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:164813:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:164853:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:164933:18)
    at https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:161831:25

    consoleObj.(anonymous function) @ rageshake.js:61
    _callee$ @ MatrixClientPeg.js:136
    tryCatch @ runtime.js:64
    invoke @ runtime.js:298
    prototype.(anonymous function) @ runtime.js:116
    tryCatcher @ bluebird.js:5278
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3363
    Promise._settlePromise0 @ bluebird.js:3400
    Promise._settlePromises @ bluebird.js:3477
    (anonymous) @ bluebird.js:177
    Promise.then (async)

    [… this stack trace continues as in the previous logs, omitting …]

rageshake.js:61 MatrixClientPeg: really starting MatrixClient
rageshake.js:61 Getting saved sync token...
rageshake.js:61 Getting push rules...
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 Got saved sync token
rageshake.js:61 Getting saved sync...
rageshake.js:61 Got reply from saved sync, exists? false
rageshake.js:61 Got TURN URIs: turn:***redacted*** refresh in 86400 secs
rageshake.js:61 Got push rules
rageshake.js:61 Checking lazy load status...
rageshake.js:61 Checking server lazy load support...
rageshake.js:61 Creating and storing lazy load sync filter...
rageshake.js:61 Created and stored lazy load sync filter
rageshake.js:61 Checking whether lazy loading has changed in store...
rageshake.js:61 Storing client options...
tanius commented 5 years ago

For all the above login attempts, I am using our custom Matrix homeserver. (Which is why the logs say Overrode homeserver setting with … from login response.)

Just checked our Matrix server log, but found nothing of interest for my login attempts. Starting from a GET … login request, it looks as pasted below for the requests coming from my computer.

Out of curiosity, I opened an account on the "standard" matrix.org homeserver and tried logging in there, using the same procedure as in the post above.

Login to that account worked the first time without any issue. But from the second time I had the same login problem that I have on our own homeserver, with the last log message being "Storing client options...". So it does not seem to be a problem related to our homeserver, but to when exactly the local storage issue appears, which is not not really predictable as you said.


Matrix server log excerpt from our homeserver while I try to access my account there with Riot:

2019-04-08 23:38:50,494 - synapse.access.https.8448 - 233 - INFO - GET-148963- ***IP redacted*** - 8448 - Received request: GET /_matrix/client/r0/login

2019-04-08 23:38:50,495 - synapse.access.https.8448 - 302 - INFO - GET-148963- ***IP redacted*** - 8448 - {None} Processed request: 0.001sec/0.000sec (0.000sec, 0.001sec) (0.000sec/0.000sec/0) 59B 200 "GET /_matrix/client/r0/login HTTP/1.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36" [0 dbevts]

2019-04-08 23:39:50,396 - twisted - 240 - INFO - - Timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=34106, flowInfo=0, scopeID=0)

2019-04-08 23:39:50,496 - twisted - 240 - INFO - - Timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=34096, flowInfo=0, scopeID=0)

2019-04-08 23:40:05,397 - twisted - 240 - INFO - - Forcibly timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=34106, flowInfo=0, scopeID=0)

2019-04-08 23:40:05,497 - twisted - 240 - INFO - - Forcibly timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=34096, flowInfo=0, scopeID=0)

2019-04-08 23:40:42,864 - synapse.access.https.8448 - 233 - INFO - OPTIONS-148978- ***IP redacted*** - 8448 - Received request: OPTIONS /_matrix/client/r0/register

2019-04-08 23:40:42,865 - synapse.access.https.8448 - 302 - INFO - OPTIONS-148978- ***IP redacted*** - 8448 - {None} Processed request: 0.001sec/0.000sec (0.000sec, 0.000sec) (0.000sec/0.000sec/0) 22B 200 "OPTIONS /_matrix/client/r0/register HTTP/1.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36" [0 dbevts]

2019-04-08 23:40:42,951 - synapse.access.https.8448 - 233 - INFO - POST-148979- ***IP redacted*** - 8448 - Received request: POST /_matrix/client/r0/register

2019-04-08 23:40:42,952 - synapse.access.https.8448 - 302 - INFO - POST-148979- ***IP redacted*** - 8448 - {None} Processed request: 0.001sec/0.000sec (0.001sec, 0.000sec) (0.000sec/0.000sec/0) 80B 403 "POST /_matrix/client/r0/register HTTP/1.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36" [0 dbevts]

2019-04-08 23:41:42,953 - twisted - 240 - INFO - - Timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=35010, flowInfo=0, scopeID=0)
jryans commented 5 years ago

@tanius Thanks for the latest round of logs! I am surprised to see it stop at that point without also logging a warning or error... Out of curiosity, are you sure you have configured Chrome to show all default log levels? For example, in Chrome 75, the Console tab has a "Default levels" menu, and you should have Error, Warning, and Info all checked. The Verbose option shouldn't matter.

Anyway, I'll work on wrapping this step just in case we are somehow triggering an error that isn't getting logged.

jryans commented 5 years ago

@tanius Okay, we've added extra logging specifically to the Storing client options... step on https://riot.im/develop, so please re-test when you have a chance.

tanius commented 5 years ago

are you sure you have configured Chrome to show all default log levels? For example, in Chrome 75, the Console tab has a "Default levels" menu, and you should have Error, Warning, and Info all checked.

Yes, sure about that. The dropdown menu to choose the log levels says "Default levels", and "Info", "Warnings" and "Error" are checked in that dropdown.

we've added extra logging specifically to the Storing client options... step

I tested again, but the log output did not change. The last lines are still these:

Got push rules
rageshake.js:61 Checking lazy load status...
rageshake.js:61 Checking server lazy load support...
rageshake.js:61 Creating and storing lazy load sync filter...
rageshake.js:61 Created and stored lazy load sync filter
rageshake.js:61 Checking whether lazy loading has changed in store...
rageshake.js:61 Storing client options...

So I poked around with the debugger, and found out the following (which may or may not be useful for you; if not, maybe tell me some breakpoints in the debugger and variable values you're interested in).

Finding the error in the "Storing client options…" step

In the debugger, I tried to follow the program as far as possible after it logged "Storing client options...". The last relevant point was at this stack state:

With this stack state:

../../ReactSDKDevelop/workspace/matrix-js-sdk/lib/client.js.MatrixClient._storeClientOptions (client.js:3830)
_callee4$ (sync.js:540)
tryCatch (runtime.js:62)
invoke (runtime.js:296)
prototype.(anonymous function) (runtime.js:114)
tryCatcher (bluebird.js:5276)
PromiseSpawn._promiseFulfilled (bluebird.js:2147)
Promise._settlePromise (bluebird.js:3359)
Promise._settlePromise0 (bluebird.js:3399)
Promise._settlePromises (bluebird.js:3479)
(anonymous) (bluebird.js:175)

In the top frame, the execution was pause in this line, right before returning the value that it calculated:

return this.store.storeClientOptions(serializableOpts);

(That's src/client.js line 3830, using unbundled filename and line numbers as done by Chrome dev tools.)

Now the interesting thing is that return value: it's an object "Promise" that contains a lot of stacktraces that I never saw in the log. It has a stacktrace in its _trace.stack attribute, and similar stack traces in parent._trace.stack, parent.parent._trace.stack and so on, in five levels. Here are all these stack traces:

_trace.stack:

 "Error
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:40576:19)
    at new PromiseSpawn (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41586:17)↵    at IndexedDBStore.<anonymous> (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41740:21)
    at IndexedDBStore.storeClientOptions (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:32391:26)
    at MatrixClient.../../ReactSDKDevelop/workspace/matrix-js-sdk/lib/client.js.MatrixClient._storeClientOptions (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:6616:23)
    at SyncApi._callee4$ (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34845:72)↵    at tryCatch (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50686:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50920:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50738:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:44507:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41640:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42710:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42750:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42830:18)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:39728:25

_parent._trace.stack:

 Error
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:40576:19)
    at new PromiseSpawn (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41586:17)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41740:21
    at checkLazyLoadStatus (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34872:26)
    at _callee3$ (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34649:29)
    at tryCatch (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50686:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50920:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50738:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:44507:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41640:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42710:26)
    at Promise._fulfillPromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42805:14)
    at Promise._settlePromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42831:18)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:39728:25

_parent._parent._trace.stack:

Error
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:40576:19)
    at new PromiseSpawn (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41586:17)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41740:21
    at getPushRules (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34660:26)
    at SyncApi.../../ReactSDKDevelop/workspace/matrix-js-sdk/lib/sync.js.SyncApi.sync (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34900:9)
    at MatrixClient.<anonymous> (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:6586:23)
    at MatrixClient.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:44507:23)
    at MatrixClient.<anonymous> (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41981:34)
    at MatrixClient.startClient (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:6590:23)
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:58169:74)
    at tryCatch (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161296:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161530:22)
    at Generator.prototype.(anonymous function) [as throw] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161348:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:166938:23)
    at PromiseSpawn._promiseRejected (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:164081:10)
    at Promise._settlePromise (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165143:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165181:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165257:18)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:162159:25

_parent._parent._parent._trace.stack:

Error
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:40576:19)
    at MatrixClient.<anonymous> (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41979:13)
    at MatrixClient.startClient (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:6590:23)
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:58169:74)
    at tryCatch (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161296:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161530:22)
    at Generator.prototype.(anonymous function) [as throw] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161348:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:166938:23)
    at PromiseSpawn._promiseRejected (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:164081:10)
    at Promise._settlePromise (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165143:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165181:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165257:18)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:162159:25

So why do I not see these stack traces in the console log?

Now when further executing the program to see what happens to these stack traces, I got to this stack state:

invoke (runtime.js:297)
prototype.(anonymous function) (runtime.js:114)
tryCatcher (bluebird.js:5276)
PromiseSpawn._promiseFulfilled (bluebird.js:2147)
(anonymous) (bluebird.js:2251)
(anonymous) (indexeddb.js:289)
../../ReactSDKDevelop/workspace/matrix-js-sdk/lib/client.js.MatrixClient._storeClientOptions (client.js:3830)
_callee4$ (sync.js:540)
…

The stack traces where somewhere inside variable record. And record.type was normal, which is seemingly the reason why these exceptions did not get logged in the console log?

Side note: code / comment inconsistency

Taking the last stack state above and progressing to runtime.js:304, variable state was suspendedYield. This got set in a piece of code in ll. 298 - 304:

// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context.done
    ? GenStateCompleted
    : GenStateSuspendedYield;

It seems to me that the code comment and code do not match here. Maybe assigning GenStateSuspendedYield is a mistake here and GenStateExecuting is needed to let Riot progress with loading? (Didn't test that, though.)

jryans commented 5 years ago

@tanius Thanks for this investigation!

I think you ended up following some of the promise handling code as it tries to save stack traces in case of an eventual error to report. It doesn't appear to believe there is an error to report, so that's why we haven't seen it in the console.

As for the code / comment side note, that seems to be in some generated code added by tools and libraries we use, rather than Riot directly. I'll keep it mind in case we need to investigate further there.

At the moment, it feels like the storeClientRecords step is hanging without ever actually failing, so we should try to find out why that's happening. Since you seem to be willing to look around with the debugger, here are some questions that may help us understand what's happening.

At the moment, my suspicion is that something is getting "stuck" in the browser in such a way that txnAsPromise does not receive either event, so we end up waiting forever.

xiphiness commented 5 years ago

I'm having the same issue, also with Chrome. I don't have the bandwidth to try to fix the bugs, but could help with debugging and replicating the issue. It works fine in incognito.

andreygursky commented 5 years ago

Again after opening my default room https://riot.im/app/... non-stop spinning. After logout no login possible:

Unhandled rejection TypeError: Cannot read property 'name' of undefined
    at e.<anonymous> (Unhandled rejection TypeError: Cannot read property 'name' of undefined    at e.<anonymous> (https://riot.im/app/bundles/ffb4fa6e8a9bd1bedd9a/bundle.js:1:9406)
...

Reloading the page https://riot.im/app/#/welcome informs about "Unable to restore session". Choosing "clear storage and sign out" doesn't help. Same error as above.

andreygursky commented 5 years ago

I've just successfully logged-in.

andreygursky commented 5 years ago

And now I know how to trigger this issue. To be able to login and not to get "DOMException: QuotaExceededError" right after that, $HOME must have at least 756MB free space. Unexpectedly much I'd say.

jryans commented 5 years ago

I've just successfully logged-in.

Hooray! 😁

$HOME must have at least 756MB free space. Unexpectedly much I'd say.

Unfortunately, these limits are determined by the browser itself, so we don't have a lot of control over this. https://github.com/vector-im/riot-web/issues/9362 may help, though.

z3ntu commented 4 years ago

I can confirm that clearing up the home partition (from 894M free where it didn't work) to 2,2G free solves this issue.

BloodyIron commented 4 years ago

So, should we close this then?

turt2live commented 4 years ago

looks like the issue is indeed resolved. If the issue persists, visit us in #riot-web:matrix.org