Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

特定の手順を踏むとページが正常に描画されない #14170

Closed
1 task
mattyatea opened this issue Jul 10, 2024 · 35 comments · Fixed by #14380 or amsc-tech/misskey.rest#2
Closed
1 task
Labels
🐛Bug Unexpected behavior 🔥high priority packages/frontend Client side specific issue/PR

Comments

@mattyatea
Copy link
Member

mattyatea commented Jul 10, 2024

💡 Summary

image
このような感じになり、リロードをしない限り正常に閲覧することができない。

🥰 Expected Behavior

正常に閲覧できる

🤬 Actual Behavior

正常に閲覧できない

📝 Steps to Reproduce

  1. Google Chromeなどの 開発者ツール の パフォーマンスタブ から CPUをx6ぐらいにスロットリングする
    image
  2. タイムライン を開いた状態で、リロードして 通知 を連打する
    3.添付画像のようになる
    文章にするのが難しいのでGifを添付します。
    bug

https://mattyaski.co , https://prismisskey.space , https://misskey.io と手元の開発用サーバーで同様の問題を起こすことができます。

💻 Frontend Environment

* Model and OS of the device(s): Windows 11
* Browser: Vivaldi 6.8.3381.46
* Server URL: https://misskey.io 
* Misskey: 2024.5.0-io.1a

🛰 Backend Environment (for server admin)

* Installation Method or Hosting Service:
* Misskey:
* Node:
* PostgreSQL:
* Redis:
* OS and Architecture:

Do you want to address this bug yourself?

  • Yes, I will patch the bug myself and send a pull request
@mattyatea mattyatea added the ⚠️bug? This might be a bug label Jul 10, 2024
@fruitriin
Copy link
Contributor

スマホで見てるとTLがシュッと消えて操作不能になるやつの気がする
エラーメッセージは parentNode がうんちゃらっぽい

@fruitriin
Copy link
Contributor

image

@fruitriin
Copy link
Contributor

null に parentNode がないよ とのこと

@mattyatea
Copy link
Member Author

関係あるかわからないけどpnpm devのほうでログを見ると

nirax.ts:373 [Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core . 
  at <KeepAlive max=3 exclude=undefined > 
  at <RouterView> 
  at <MkStickyContainer ref="contents" class="ui-universal-contents" style= {container-type: 'inline-size'}  ... > 
  at <Universal> 
  at <AsyncComponentWrapper>

っていうログを吐いてる

@fruitriin
Copy link
Contributor

KeepAliveのexcludeにundefined って入れていいんだっけ
よく覚えてないけど少し嫌な予感がする

@fruitriin
Copy link
Contributor

KeepAliveのexcludeにundefined渡したら死にそう
https://ja.vuejs.org/api/built-in-components.html#keepalive

interface KeepAliveProps {
  /**
   * 指定された場合、`include` でマッチした名前の
   * コンポーネントのみがキャッシュされます。
   */
  include?: MatchPattern
  /**
   * `exclude` でマッチした名前のコンポーネントは
   * キャッシュされません。
   */
  exclude?: MatchPattern
  /**
   * キャッシュするコンポーネントインスタンスの最大数。
   */
  max?: number | string
}

type MatchPattern = string | RegExp | (string | RegExp)[]

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Jul 11, 2024

? だから死なないとは思うけど(propsが無い判定されるので)

image

@KisaragiEffective
Copy link
Collaborator

exactOptionalPropertyTypesが無効なので意図的にundefinedを渡すことができる

@kakkokari-gtyih
Copy link
Contributor

excludeの値がないときにプロパティごと消すやつを実装してみたけど、実装してもして無くてもこのバグは現在手元で再現できてない

@mattyatea
Copy link
Member Author

https://soranakiproject.com/notes/9v9r1tzgya
https://soranakiproject.com/notes/9vihow2ms7
私以外のユーザーからの報告で気がついたバグだったりします👀

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Jul 11, 2024

あーいけた
(ある種のグリッチっぽいな)

@kakkokari-gtyih
Copy link
Contributor

vuejs/core#6463

@fruitriin
Copy link
Contributor

iPhoneのSafariで頻発する、MacのSafariでも稀に起きることがあるからメモリ周りをスロットリングすると再現するかも

@MineCake147E
Copy link

MineCake147E commented Jul 11, 2024

そういえばAndroidのFirefoxでも開いてすぐ通知ページに移動して戻って来るとこのようになりますね...

@Sayamame-beans
Copy link
Member

iPhoneのSafariで頻発する、MacのSafariでも稀に起きることがあるからメモリ周りをスロットリングすると再現するかも

(私の環境において)iPhoneでスワイプして前のページに戻ったりすると高頻度でフリーズしてMisskeyが操作不能になる(絵文字のアニメーションなども止まる)挙動があるなと思ってたんですが、確かにこれかもしれません…

@mattyatea
Copy link
Member Author

vuejs/core#10899
これな気がする
開発環境でvueのバージョンを最新にしたら治った気がする

@mattyatea
Copy link
Member Author

bug-fix
少なくとも自分の環境では Vueのバージョンを上げる ことで解決できた気がする

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Jul 11, 2024

ならUpdate depsは2週間前程度にdevelopに入ってるので多分治ってるんじゃないかしら

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Jul 12, 2024

  • Misskey v2024.5.0にはVue v3.4.26が入っている
  • Vue v3.4.28以降に10899のfixが入っている
  • Vue v3.4.31が入る次期リリースでは修正済みとみてよさそう

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Jul 14, 2024

連打しなくとも画面が表示されない現象を確認(このissueとは別問題の可能性あり)

  1. トップページを読み込む(トップページでMisskeyを起動する)
  2. 設定に飛ぶ
  3. 設定のページをいくつか遷移する(3回目くらいでエラーになる)

以下のdevelopに近い環境・開発環境の両方で確認

  • 0key.dev
  • misskey.systems

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Jul 14, 2024

ページキャッシュ数の限界にぶち当たったら起こるっぽい

[Vue warn]: Unhandled error during execution of render function 
  at <KeepAlive max=3 exclude=undefined > 
  at <RouterView> 
  at <MkSpacer contentMax=900 marginMin=20 marginMax=32 > 
  at <MkStickyContainer> 
  at <Index key="/settings{}" > 
  at <AsyncComponentWrapper key="/settings{}" > 
  at <KeepAlive max=3 exclude=undefined > 
  at <RouterView> 
  at <MkStickyContainer ref="contents" class="ui-universal-contents" style= {container-type: 'inline-size'}  ... > 
  at <Universal> 
  at <AsyncComponentWrapper>


Promise.then (async)		
navigate	@	nirax.ts:372
push	@	nirax.ts:410
push	@	main.ts:72
nav	@	MkA.vue:102

@mattyatea
Copy link
Member Author

連打って書いてるのは再現が一番しやすかったのが連打だったから書いてるだけかも

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Jul 15, 2024

@mattyatea vueのバージョン上げて、かつ#14202 マージ後のdevelopで試してもまだ再現する?

@kakkokari-gtyih
Copy link
Contributor

再現する報告あり

@kakkokari-gtyih
Copy link
Contributor

関係するかもしれないissue

vuejs/core#11344

@mattyatea
Copy link
Member Author

今最新コミットで確かめましたが再現できました

@kakkokari-gtyih
Copy link
Contributor

これ結局何なんだろう・・・

@kakkokari-gtyih kakkokari-gtyih pinned this issue Jul 23, 2024
@tai-cha
Copy link
Contributor

tai-cha commented Jul 23, 2024

関連するかわからないけど高速じゃなくてもコントロールパネルと設定を交互に遷移すると表示が狂うと聞いた

@kakkokari-gtyih kakkokari-gtyih added this to the v2024.7.0 milestone Jul 23, 2024
@samunohito
Copy link
Member

バージョンを下げれば発生しなくなったりとかしないですかね…?
特定バージョンまで落として発生しないのであれば一旦そこまで落として、↑がfixされたら引き上げるとか

@kakkokari-gtyih
Copy link
Contributor

バージョンを下げれば発生しなくなったりとかしないですかね…? 特定バージョンまで落として発生しないのであれば一旦そこまで落として、↑がfixされたら引き上げるとか

  • KeepAlivemaxをつけない(重くなりそう)
  • KeepAliveを一時的に外す(ページキャッシュが効かなくなる)

のどちらかで解消しそうではある

@syuilo
Copy link
Member

syuilo commented Jul 23, 2024

ゔえ

@kakkokari-gtyih
Copy link
Contributor

一応バグとPRを見た感じ:

asyncなコンポーネントが解決せずにキャッシュされたときにそれ(虚無のキャッシュ)を読み出そうとしてバグってるみたいなので、リソース制限でこれが再現しやすくなるというのはリソース制限でコンポーネントの解決が遅くなることが原因と思われる

@samunohito samunohito added this to the v2024.8.0 milestone Aug 2, 2024
@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Aug 7, 2024

vuejs/core#11496 がマージされたのでVueのバージョンが上がったらVueだけ更新してリリースしてしまいたい

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented Aug 8, 2024

Vue v3.4.37が出たので、それ適用して治るかどうかためしてほしい(Version bumpのプルリクエストはもう立てておいた)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛Bug Unexpected behavior 🔥high priority packages/frontend Client side specific issue/PR
Projects
None yet
9 participants