SchildiChat / schildichat-desktop

Matrix client / Element Web/Desktop fork
https://schildi.chat
Apache License 2.0
379 stars 44 forks source link

Typing @, :, / or + in composer box crashes the client #188

Closed austinhuang0131 closed 1 year ago

austinhuang0131 commented 1 year ago

The bug has appeared consistently in at least v1.11.22-sc.1 and v1.11.26-sc.1.

I'm on MacOS Ventura 13.2.1; @yu-re-ka also claimed to have reproduced it on a browser. However the maintainers claim it's "not reproducible."

Console log (`:` was pressed) ``` rageshake.ts:73 TypeError: Cannot read properties of null (reading 'currentState') at new se (EmojiProvider.tsx:111:42) at Autocompleter.ts:69:20 at Array.map () at new de (Autocompleter.ts:68:36) at he.componentDidMount (Autocomplete.tsx:83:30) at _s (react-dom.production.min.js:219:411) at Nl (react-dom.production.min.js:259:160) at t.unstable_runWithPriority (scheduler.production.min.js:18:343) at Vi (react-dom.production.min.js:122:325) at Ol (react-dom.production.min.js:252:279) e. @ rageshake.ts:73 us @ react-dom.production.min.js:216 r.payload @ react-dom.production.min.js:217 ho @ react-dom.production.min.js:130 ja @ react-dom.production.min.js:184 $s @ react-dom.production.min.js:269 kl @ react-dom.production.min.js:250 Cl @ react-dom.production.min.js:250 xl @ react-dom.production.min.js:250 El @ react-dom.production.min.js:243 (anonymous) @ react-dom.production.min.js:123 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 $i @ react-dom.production.min.js:123 Wi @ react-dom.production.min.js:122 ml @ react-dom.production.min.js:237 enqueueSetState @ react-dom.production.min.js:133 g.setState @ react.production.min.js:12 (anonymous) @ BasicMessageComposer.tsx:258 update @ model.ts:215 (anonymous) @ BasicMessageComposer.tsx:395 rageshake.ts:73 TypeError: Cannot read properties of null (reading 'currentState') at new se (EmojiProvider.tsx:111:42) at Autocompleter.ts:69:20 at Array.map () at new de (Autocompleter.ts:68:36) at he.componentDidMount (Autocomplete.tsx:83:30) at _s (react-dom.production.min.js:219:411) at Nl (react-dom.production.min.js:259:160) at t.unstable_runWithPriority (scheduler.production.min.js:18:343) at Vi (react-dom.production.min.js:122:325) at Ol (react-dom.production.min.js:252:279) e. @ rageshake.ts:73 (anonymous) @ logger.ts:44 componentDidCatch @ ErrorBoundary.tsx:54 o.componentDidCatch.r.callback @ react-dom.production.min.js:217 mo @ react-dom.production.min.js:131 _s @ react-dom.production.min.js:220 Nl @ react-dom.production.min.js:259 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 Ol @ react-dom.production.min.js:252 El @ react-dom.production.min.js:243 (anonymous) @ react-dom.production.min.js:123 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 $i @ react-dom.production.min.js:123 Wi @ react-dom.production.min.js:122 ml @ react-dom.production.min.js:237 enqueueSetState @ react-dom.production.min.js:133 g.setState @ react.production.min.js:12 (anonymous) @ BasicMessageComposer.tsx:258 update @ model.ts:215 (anonymous) @ BasicMessageComposer.tsx:395 rageshake.ts:73 The above error occurred while React was rendering the following components: at he (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:1768158) at div at div at Ce (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:1772675) at div at V (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:1421900) at vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:69158 at div at div at div at nr (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:376717) at vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:69158 at div at div at Oa (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:193105) at g (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:1055740) at main at Xd (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:567042) at div at div at div at Em (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:625395) at g (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:1055740) at Ye (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:13447) e. @ rageshake.ts:73 (anonymous) @ logger.ts:44 componentDidCatch @ ErrorBoundary.tsx:55 o.componentDidCatch.r.callback @ react-dom.production.min.js:217 mo @ react-dom.production.min.js:131 _s @ react-dom.production.min.js:220 Nl @ react-dom.production.min.js:259 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 Ol @ react-dom.production.min.js:252 El @ react-dom.production.min.js:243 (anonymous) @ react-dom.production.min.js:123 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 $i @ react-dom.production.min.js:123 Wi @ react-dom.production.min.js:122 ml @ react-dom.production.min.js:237 enqueueSetState @ react-dom.production.min.js:133 g.setState @ react.production.min.js:12 (anonymous) @ BasicMessageComposer.tsx:258 update @ model.ts:215 (anonymous) @ BasicMessageComposer.tsx:395 rageshake.ts:73 TypeError: Cannot read properties of undefined (reading 'destroy') at he.componentWillUnmount (Autocomplete.tsx:102:28) at Es (react-dom.production.min.js:224:493) at Ds (react-dom.production.min.js:230:294) at Nl (react-dom.production.min.js:256:468) at t.unstable_runWithPriority (scheduler.production.min.js:18:343) at Vi (react-dom.production.min.js:122:325) at Ol (react-dom.production.min.js:252:279) at El (react-dom.production.min.js:243:371) at react-dom.production.min.js:123:115 at t.unstable_runWithPriority (scheduler.production.min.js:18:343) e. @ rageshake.ts:73 us @ react-dom.production.min.js:216 r.payload @ react-dom.production.min.js:217 ho @ react-dom.production.min.js:130 ja @ react-dom.production.min.js:184 $s @ react-dom.production.min.js:269 kl @ react-dom.production.min.js:250 Cl @ react-dom.production.min.js:250 xl @ react-dom.production.min.js:250 El @ react-dom.production.min.js:243 (anonymous) @ react-dom.production.min.js:123 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 $i @ react-dom.production.min.js:123 Wi @ react-dom.production.min.js:122 ml @ react-dom.production.min.js:237 enqueueSetState @ react-dom.production.min.js:133 g.setState @ react.production.min.js:12 (anonymous) @ BasicMessageComposer.tsx:258 update @ model.ts:215 (anonymous) @ BasicMessageComposer.tsx:395 rageshake.ts:73 TypeError: Cannot read properties of undefined (reading 'destroy') at he.componentWillUnmount (Autocomplete.tsx:102:28) at Es (react-dom.production.min.js:224:493) at Ds (react-dom.production.min.js:230:294) at Nl (react-dom.production.min.js:256:468) at t.unstable_runWithPriority (scheduler.production.min.js:18:343) at Vi (react-dom.production.min.js:122:325) at Ol (react-dom.production.min.js:252:279) at El (react-dom.production.min.js:243:371) at react-dom.production.min.js:123:115 at t.unstable_runWithPriority (scheduler.production.min.js:18:343) e. @ rageshake.ts:73 (anonymous) @ logger.ts:44 componentDidCatch @ ErrorBoundary.tsx:54 o.componentDidCatch.r.callback @ react-dom.production.min.js:217 mo @ react-dom.production.min.js:131 _s @ react-dom.production.min.js:220 Nl @ react-dom.production.min.js:259 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 Ol @ react-dom.production.min.js:252 El @ react-dom.production.min.js:243 (anonymous) @ react-dom.production.min.js:123 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 $i @ react-dom.production.min.js:123 Wi @ react-dom.production.min.js:122 ml @ react-dom.production.min.js:237 enqueueSetState @ react-dom.production.min.js:133 g.setState @ react.production.min.js:12 (anonymous) @ BasicMessageComposer.tsx:258 update @ model.ts:215 (anonymous) @ BasicMessageComposer.tsx:395 rageshake.ts:73 The above error occurred while React was rendering the following components: at he (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:1768158) at div at div at Ce (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:1772675) at div at V (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:1421900) at vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:69158 at div at div at div at nr (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:376717) at vector://vector/webapp/bundles/9b0643d2bcc72a158e39/init.js:1:69158 at div at div at Oa (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:193105) at g (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:1055740) at main at Xd (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:567042) at div at div at div at Em (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:625395) at g (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:1055740) at Ye (vector://vector/webapp/bundles/9b0643d2bcc72a158e39/element-web-app.js:1:13447) e. @ rageshake.ts:73 (anonymous) @ logger.ts:44 componentDidCatch @ ErrorBoundary.tsx:55 o.componentDidCatch.r.callback @ react-dom.production.min.js:217 mo @ react-dom.production.min.js:131 _s @ react-dom.production.min.js:220 Nl @ react-dom.production.min.js:259 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 Ol @ react-dom.production.min.js:252 El @ react-dom.production.min.js:243 (anonymous) @ react-dom.production.min.js:123 t.unstable_runWithPriority @ scheduler.production.min.js:18 Vi @ react-dom.production.min.js:122 $i @ react-dom.production.min.js:123 Wi @ react-dom.production.min.js:122 ml @ react-dom.production.min.js:237 enqueueSetState @ react-dom.production.min.js:133 g.setState @ react.production.min.js:12 (anonymous) @ BasicMessageComposer.tsx:258 update @ model.ts:215 (anonymous) @ BasicMessageComposer.tsx:395 ```

Could be #183

su-ex commented 1 year ago

Can you show your im.ponies.emote_rooms account data? Still can't reproduce this.

austinhuang0131 commented 1 year ago

something like:

{
  "rooms": {
    "!roomid:example.com": {
      "pack-name": {},
    }
  }
}

I cleared a few entries of rooms I'm no longer in, it doesn't crash anymore, the command palette works but there's no mention/emoji list

austinhuang0131 commented 1 year ago

why is the mention list tied to the "Enable Emoji suggestions while typing" setting...

anyways it just appears that i have unreachable rooms in that event which crashes the client

su-ex commented 1 year ago

Ahhh, that gives me an idea how to reproduce it. 💡 It's rather likely that unreachable rooms might end up in there, so it should somehow be mitigated though.