Project

General

Profile

Actions

バグ #1367

closed

アカウント登録時に落ちる

Added by あひる 家鴨 about 5 years ago. Updated about 5 years ago.

Status:
終了
Priority:
通常
Target version:
プラグイン名:
extract
クラッシュする:
Yes

Description

アカウント登録時完了時に下記エラーで落ちる。

/core/plugin/extract/extract_tab_list.rb:36:in `add_record': undefined method `name' for #<Hash:0x0000555e12ca9318>

原因はハッシュのプロパティに対してメソッドアクセスをしようとしているためと思われます。
ブランチ topic/1367-fix-extract-settings に修正をプッシュしましたので確認をお願いします。


再現手順

最新のmasterでmastodonアカウントを追加する。

Actions #2

Updated by toshi_a 初音 about 5 years ago

Hashが渡ってきているのが問題ですね。リリース前にチュートリアルを流した時には再現しなかったので、もう一度やってみます。

Actions #3

Updated by あひる 家鴨 about 5 years ago

mastodonのアカウント登録時に `Plugin::Extract::Setting` ではなく、ただのハッシュを渡しているように見えたので、他の箇所と同様にインスタンス化して渡してみたら落ちませんでした。
topic/1367-instantiate-setting にとりあえず確認のためにプッシュしてみました。

Actions #4

Updated by あひる 家鴨 about 5 years ago

設定からmastodonの抽出タブを開いた際も同様の問題が発生しました。

Actions #5

Updated by toshi_a 初音 about 5 years ago

  • Assignee set to あひる 家鴨

新規プロファイルでチュートリアルを流しましたが、クラッシュしませんでした。もう少し再現手順を詳細に教えてもらえますか。

Actions #6

Updated by あひる 家鴨 about 5 years ago

以下の手順を行なった場合に起こるということがわかりました。

下記URLの手順通りに「リンクを開く方法」を echo にした状態で認証を進めると、落ちることがわかりました。
https://honobono-ahiru.hatenablog.com/entry/2019/07/23/201717

なお、VirtualBox上のUbuntu 18.04 で構築し検証したところ以下の結果になりました。
・echoなしの場合落ちない
・echoありの場合落ちる

Actions #7

Updated by toshi_a 初音 about 5 years ago

エッ、本当にクラッシュした

Actions #8

Updated by toshi_a 初音 about 5 years ago

再現手順ですが、「リンクを開く方法」をechoに変えなくても、起動後設定画面を一度でも開いたことがあると再現しました。
ウィジェットかイベントハンドラの開放漏れがありそう……(o)

Actions #9

Updated by toshi_a 初音 about 5 years ago

d75deaf6 のパッチで良さそうです。

ただ、設定画面を開いている間だけではなく、一度でも開いた後なら閉じてもクラッシュするのは、 Plugin::Extract::ExtractTabList がメモリリークしており、Pluggaloidイベントハンドラが開放されていないからです。

source:core/plugin/settings/menu.rb@cca427d1#L63 で、設定メニューを作るためにPhantomを使って一度設定を組み立てさせているのがウィジェットのリークの原因となっています。
PhantomはForm DSLの全てのインスタンスメソッドを提供し、どのようなメソッド呼び出しにもMOCKを返すMOCKを返します。結果として、pack_start等にもたんにMOCKを返すだけなので、destroyイベントが発生することなくGCされるかメモリリークします。

すると、 source:core/plugin/extract/extract.rb@cca427d1#L101 のdestroyイベントハンドラが呼ばれず、 Plugin::Extract::ExtractTabList が開放されません。

このリークの解決は割と難しいかも

Actions #10

Updated by toshi_a 初音 about 5 years ago

  • Status changed from パッチ適用待ち to レビュー待ち
Actions #11

Updated by toshi_a 初音 about 5 years ago

  • Status changed from レビュー待ち to 終了

masterにmergeしました

Actions

Also available in: Atom PDF