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

Bug Tracking System #4

Open
drop-stones opened this issue Oct 30, 2020 · 2 comments
Open

Bug Tracking System #4

drop-stones opened this issue Oct 30, 2020 · 2 comments

Comments

@drop-stones
Copy link
Owner

drop-stones commented Oct 30, 2020

演習1: 普段使っているOSSに関するバグ報告をいくつか探せ

  • chrome bts

    • chromeに関するバグ報告がまとまっている
  • vscode issue in github

    • GitHubのIssue機能を用いてユーザーや開発者がバグ報告を行っている
  • バグ報告は入力フォームを通して伝えられ、一般に公開されないようなOSSもある

@drop-stones
Copy link
Owner Author

drop-stones commented Oct 30, 2020

演習2: 良いバグ報告と、悪いバグ報告を探せ

  • 探し方

    • vscodeのissueから、コメントの多い順でソートし、上からバグを探す。
  • Good bug report

    • バグ再現の手順と環境が詳しく書かれている
    • 多くの人がコメントを残しており、同じバグを踏んで困っている人が多そう
  • Bad bug report

    • 一行しか書かれておらず、再現する手順、環境が読み取れない
  • バグ報告の良し悪しに影響する要素

    • 多くのユーザーが同じバグを踏んでいた (影響力)
    • 多くの文章で、詳細に記述されている (情報量)
    • 環境や、手順などが明記されている (再現性)

@drop-stones
Copy link
Owner Author

drop-stones commented Oct 30, 2020

演習3: 自分のOSSに対しIssueを投稿し、修正コミットを投げてIssueを自動で閉じよ

  • OSS: Scheduling-Algorithms-Simulation
    • Issue: Add feature: Shortest-Job-First Scheduling
    • 内容
      • Shortest-Job-First Schedulingアルゴリズム(burst-timeの短いものから処理)を実装する
    • バグの発見
      • データ構造std::multisetに対して、extract()を用いてタスク処理をしていたら、実行が止まってしまった。
      • gdbで確認すると、std::multisetが空になったときに、extract()が帰ってこなくなっているように見える
      $ gdb schedule_all
      ...
      gdb) b schedule_sjf.hpp:32
      gdb) run
      ...
      Breakpoint 1, cpu::sjf_cpu::run (this=0x7fffffffdf00) at ./schedule_sjf.hpp:32
      32                   handle = task_list.extract (task_list.begin ())) {
      gdb) n
      **never return**
      
      • どうやって直せば良いのかわからぬ、、、
    • バグの修正
      • データ構造std::multisetを利用してソートすることを止め、std::dequeに変更した
      • ソートはstd::sort()に任せることにした
    • 変更方法の理由
      • std::multisetに詳しくないため、慣れているstd::dequeを選択した
      • ソート時間については諸説あるらしく、キャッシュによって線形に配置されるvector(O(n))が一番速かったり、もしくは二分木であるset(O(logn))の方が速かったりらしい

@drop-stones drop-stones changed the title Bug-tracking Bug Tracking System Oct 31, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant