kbfs steadily increases memory usage until system reboots 2nd attempt

オープン
#28,740 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
go, raspberry-pi

調査の方向性

まず、Raspberry Pi 5 上で kbfsfuse と rsync 転送の繰り返しによるメモリ増加を再現し、報告されている top の出力とログを使って resident memory を測定します。関連する kbfsfuse の動作を追跡してリークを特定します。完了の条件は、継続的な転送によってメモリ使用量が着実に増加したり、システムが不安定になったりしなくなることです。

索引モデルが issue の本文から書いたものです。

説明

Describe the bug
Over the course of ~3 hours, kbfs steadily increases memory usage until it reaches about ~94% usage at which point my system crashes / reboots. During this time every couple of minutes I'm using rsync to copy files onto kbfs.

raspberry pi 5

  • 64-bit ARM
  • 8 G of RAM
  • 2 G of swap memory

I've compiled from source (no standard package for the above). Branch master commit 2763ebd414e3ff95c1373d41405ed8067f82f701

To Reproduce
I am running as one specific user which I've used to authenticate my device with my account.

How I start keybase and kbfs:

export GOPATH="$HOME/gopath"
export PATH="$PATH:$GOPATH/bin"
export KEYBASE_RUN_MODE=prod

export XDG_RUNTIME_DIR=/run/user/1001

nohup keybase service >> ~/logs/keybase_server.log 2>&1 &

nohup kbfsfuse /home/dllahr/kbfs >> ~/logs/kbfsfuse.log 2>&1 &

Here's a log of the results of running top once per minute over the course of ~29 minutes. You can see the memory usage (3rd column from right) goes from 18.0% to 47.4%. In the 6th column you can see the amount of resident memory usage which is also high and steadily increasing - this is not just virtual memory.

   1337 dllahr    20   0 3937072   1.4g  35104 S   0.0  18.0   3:54.41 kbfsfuse
   1337 dllahr    20   0 4071056   1.5g  35104 S   0.0  19.5   4:11.75 kbfsfuse
   1337 dllahr    20   0 4140064   1.6g  35104 S   0.0  20.1   4:31.26 kbfsfuse
   1337 dllahr    20   0 4141536   1.6g  35104 S   0.0  20.5   4:45.19 kbfsfuse
   1337 dllahr    20   0 4275328   1.7g  35104 S   0.0  21.6   5:03.51 kbfsfuse
   1337 dllahr    20   0 4342608   1.8g  35104 S   0.0  22.7   5:21.83 kbfsfuse
   1337 dllahr    20   0 4411360   1.9g  35104 S   0.0  23.7   5:36.65 kbfsfuse
   1337 dllahr    20   0 4479024   1.9g  35104 S   0.0  24.2   5:55.12 kbfsfuse
   1337 dllahr    20   0 4614912   2.0g  35104 S   0.0  25.5   6:14.25 kbfsfuse
   1337 dllahr    20   0 4614912   2.0g  35104 S   0.0  25.8   6:29.86 kbfsfuse
   1337 dllahr    20   0 4749856   2.2g  35104 S   0.0  27.4   6:49.02 kbfsfuse
   1337 dllahr    20   0 4817712   2.2g  35104 S   0.0  28.3   7:07.42 kbfsfuse
   1337 dllahr    20   0 4886592   2.3g  35104 S   0.0  29.3   7:24.17 kbfsfuse
   1337 dllahr    20   0 4954064   2.4g  35104 S   0.0  30.0   7:41.97 kbfsfuse
   1337 dllahr    20   0 5021728   2.4g  35104 S   0.0  30.7   8:00.46 kbfsfuse
   1337 dllahr    20   0 5155200   2.6g  35104 S   0.0  32.7   8:17.36 kbfsfuse
   1337 dllahr    20   0 5223760   2.6g  35104 S   0.0  33.3   8:35.35 kbfsfuse
   1337 dllahr    20   0 5355248   2.8g  35104 S   0.0  35.1   8:59.51 kbfsfuse
   1337 dllahr    20   0 5422400   2.8g  35152 S   0.0  35.2   9:19.02 kbfsfuse
   1337 dllahr    20   0 5488016   2.9g  35152 S   0.0  36.6   9:43.14 kbfsfuse
   1337 dllahr    20   0 5557216   2.9g  35152 S   0.0  37.0  10:01.03 kbfsfuse
   1337 dllahr    20   0 5754064   3.1g  35152 S   0.0  39.8  10:26.50 kbfsfuse
   1337 dllahr    20   0 5754064   3.1g  35152 S   0.0  39.9  10:45.24 kbfsfuse
   1337 dllahr    20   0 5955984   3.3g  35152 S   0.0  42.3  11:11.46 kbfsfuse
   1337 dllahr    20   0 5960656   3.3g  35152 S   0.0  42.4  11:32.43 kbfsfuse
   1337 dllahr    20   0 6026528   3.4g  35152 S   0.0  43.3  11:58.56 kbfsfuse
   1337 dllahr    20   0 6026528   3.4g  35152 S   0.0  43.6  12:19.38 kbfsfuse
   1337 dllahr    20   0 6358192   3.7g  35152 S   0.0  47.0  12:46.01 kbfsfuse
   1337 dllahr    20   0 6364208   3.7g  35152 S   0.0  47.4  13:05.80 kbfsfuse

Can you help me track down what's going wrong here? I think keybase has the potential to be an incredibly powerful tool, but this problem makes it hard for me to deploy in a stable, production system.

Expected behavior
see above

Screenshots
see above

Additional numbers
The number 345567

主要言語
Go
スター
9.3k
フォーク
1.3k
平均マージ
1日 2時間
マージ済み PR(30日)
99

環境構築

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

keybase/client のほかの issue

keybase/client の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。