論文の概要: Unveiling and Vanquishing Goroutine Leaks in Enterprise Microservices: A
Dynamic Analysis Approach
- arxiv url: http://arxiv.org/abs/2312.12002v1
- Date: Tue, 19 Dec 2023 09:49:31 GMT
- ステータス: 処理完了
- システム内更新日: 2023-12-20 16:14:51.902781
- Title: Unveiling and Vanquishing Goroutine Leaks in Enterprise Microservices: A
Dynamic Analysis Approach
- Title(参考訳): エンタープライズマイクロサービスにおけるGoroutineリークの発見と回避 - 動的分析アプローチ
- Authors: Georgian-Vlad Saioc, Dmitriy Shirchenko, Milind Chabbi
- Abstract要約: 2500行以上をホストするUberのGoモノレポの7500万行で,メッセージパッシング部分デッドロックの頻度を調査した。
GoleakとLeakProfは、単体テスト中に部分的なデッドロックを検出し、新しいバグを発生させないように設計されている。
- 参考スコア(独自算出の注目度): 1.4548651568912525
- License: http://creativecommons.org/licenses/by-nc-sa/4.0/
- Abstract: Go is a modern programming language gaining popularity in enterprise
microservice systems. Concurrency is a first-class citizen in Go with
lightweight ``goroutines'' as the building blocks of concurrent execution. Go
advocates message-passing to communicate and synchronize among goroutines.
Improper use of message passing in Go can result in ``partial deadlocks'' , a
subtle concurrency bug where a blocked sender (receiver) never finds a
corresponding receiver (sender), causing the blocked goroutine to leak memory,
via its call stack and objects reachable from the stack.
In this paper, we systematically study the prevalence of message passing and
the resulting partial deadlocks in 75 million lines of Uber's Go monorepo
hosting over 2500 microservices. We develop two lightweight, dynamic analysis
tools: Goleak and LeakProf, designed to identify partial deadlocks. Goleak
detects partial deadlocks during unit testing and prevents the introduction of
new bugs. Conversely, LeakProf uses goroutine profiles obtained from services
deployed in production to pinpoint intricate bugs arising from complex control
flow, unexplored interleavings, or the absence of test coverage. We share our
experience and insights deploying these tools in developer workflows in a large
industrial setting. Using Goleak we unearthed 857 pre-existing goroutine leaks
in the legacy code and prevented the introduction of around 260 new leaks over
one year period. Using LeakProf we found 24 and fixed 21 goroutine leaks, which
resulted in up to 34% speedup and 9.2x memory reduction in some of our
production services.
- Abstract(参考訳): Goは現代のプログラミング言語であり、エンタープライズマイクロサービスシステムで人気を博している。
ConcurrencyはGoの第一級市民で、軽量な‘goroutines’を並列実行のビルディングブロックとして持つ。
Goはメッセージパッシングを提唱し、Goroutine間で通信し、同期する。
これは、ブロックされた送信側(受信側)が対応する受信側(sender)を見つけず、ブロックされたgoroutineがそのコールスタックとスタックから到達可能なオブジェクトを介してメモリをリークする、微妙な並行性のバグである。
本稿では,2500以上のマイクロサービスをホストするuberのgo monorepoの7500万行において,メッセージパッシングと結果として生じる部分デッドロックの発生状況について体系的に検討する。
GoleakとLeakProfという,部分的なデッドロックを特定するための2つの軽量な動的解析ツールを開発しました。
goleakはユニットテスト中に部分的なデッドロックを検出し、新しいバグの発生を防ぐ。
逆にLeakProfは、運用環境にデプロイされたサービスから得られたゴロインプロファイルを使用して、複雑な制御フローや探索されていないインターリーブ、テストカバレッジの欠如に起因する複雑なバグを特定できる。
私たちは、これらのツールを大きな産業環境で開発者ワークフローにデプロイした経験と洞察を共有しています。
goleakを使って、レガシーコードの既存のgoroutineリークを857件発見し、1年間で約260件の新たなリークが発生するのを防いだ。
leakprofを使用することで,24と21のgoroutineリークが修正され,最大34%のスピードアップと9.2倍のメモリ削減を実現しました。
関連論文リスト
- Pipe-Cleaner: Flexible Fuzzing Using Security Policies [0.07499722271664144]
Pipe-CleanerはCコードの脆弱性を検出し解析するシステムである。
これは、タグベースのランタイムリファレンスモニターによって強制されるフレキシブルな開発者設計のセキュリティポリシーに基づいている。
いくつかのヒープ関連のセキュリティ脆弱性に対して、このアプローチの可能性を実証する。
論文 参考訳(メタデータ) (2024-10-31T23:35:22Z) - From Code to Correctness: Closing the Last Mile of Code Generation with Hierarchical Debugging [5.910272203315325]
さまざまなレベルの粒度でバグを分離,識別,解決し,階層的なコードデバッガであるMulti-Granularity Debugger (MG Debugger)を紹介した。
MGデバッガは問題のあるコードをサブファンクションの階層木構造に分解し、各レベルは特定のエラーの粒度を表す。
これは、HumanEvalのシード世代の精度を18.9%向上させ、HumanEvalFixの97.6%の修復成功率を達成した。
論文 参考訳(メタデータ) (2024-10-02T03:57:21Z) - Better Debugging: Combining Static Analysis and LLMs for Explainable Crashing Fault Localization [12.103194723136406]
本稿では,静的解析とLLM手法を組み合わせた説明可能なクラッシュ断層定位手法を提案する。
フレームワークコードで例外をスローするステートメントのセマンティクスを理解することは、バグだらけのメソッドをアプリコードで見つけて認識するのに役立ちます。
この考え方に基づいて、まず、各フレームワーク固有の例外に関連する重要な要素を記述する例外スローの要約(ETS)を設計する。
そして、その重要な要素をデータ追跡して、与えられたクラッシュのバグのある候補を特定し、ソートします。
論文 参考訳(メタデータ) (2024-08-22T02:18:35Z) - WildTeaming at Scale: From In-the-Wild Jailbreaks to (Adversarially) Safer Language Models [66.34505141027624]
我々は、WildTeamingを紹介した。これは自動LLM安全リチームフレームワークで、Wild-Chatbotインタラクションをマイニングし、新しいジェイルブレイク戦術の5.7Kのユニークなクラスタを発見する。
WildTeamingは、未確認のフロンティアLSMの脆弱性を明らかにし、最大4.6倍の多様性と敵の攻撃に成功した。
論文 参考訳(メタデータ) (2024-06-26T17:31:22Z) - JailbreakBench: An Open Robustness Benchmark for Jailbreaking Large Language Models [123.66104233291065]
ジェイルブレイク攻撃は、大きな言語モデル(LLM)が有害、非倫理的、またはその他の不快なコンテンツを生成する原因となる。
これらの攻撃を評価することは、現在のベンチマークと評価テクニックの収集が適切に対処していない、多くの課題を提示します。
JailbreakBenchは、以下のコンポーネントを備えたオープンソースのベンチマークである。
論文 参考訳(メタデータ) (2024-03-28T02:44:02Z) - AdaShield: Safeguarding Multimodal Large Language Models from Structure-based Attack via Adaptive Shield Prompting [54.931241667414184]
textbfAdaptive textbfShield Promptingを提案する。これは、MLLMを構造ベースのジェイルブレイク攻撃から守るための防御プロンプトで入力をプリペイドする。
我々の手法は、構造に基づくジェイルブレイク攻撃に対するMLLMの堅牢性を一貫して改善することができる。
論文 参考訳(メタデータ) (2024-03-14T15:57:13Z) - Hyperfuzzing: black-box security hypertesting with a grey-box fuzzer [2.2000560351723504]
LeakFuzzerは、非干渉セキュリティプロパティとセキュリティフローポリシーを神託として使用することで、技術の状態を前進させる。
LeakFuzzerは、通常のファジィザが検出できるのと同じエラーセットを検出し、セキュアな情報フローポリシー違反を検出することができる。
論文 参考訳(メタデータ) (2023-08-17T16:15:02Z) - Exploring Continual Learning for Code Generation Models [80.78036093054855]
継続的学習(CL)は、コードドメインの中でまだ過小評価されていない重要な側面である。
コード生成,翻訳,要約,改良など,幅広いタスクをカバーするCodeTask-CLというベンチマークを導入する。
即時選択機構の不安定な訓練により,プロンプトプール (PP) などの有効手法が破滅的な忘れ込みに悩まされることが判明した。
論文 参考訳(メタデータ) (2023-07-05T16:58:39Z) - Teaching Large Language Models to Self-Debug [62.424077000154945]
大規模言語モデル(LLM)は、コード生成において素晴らしいパフォーマンスを達成した。
本稿では,大規模言語モデルで予測プログラムを数発のデモでデバッグする自己デバッグを提案する。
論文 参考訳(メタデータ) (2023-04-11T10:43:43Z) - DeepDebug: Fixing Python Bugs Using Stack Traces, Backtranslation, and
Code Skeletons [5.564793925574796]
本稿では,大規模な事前学習型トランスを用いた自動デバッグ手法を提案する。
まず、合成バグを生成するために、逆コミットデータにバグ生成モデルをトレーニングすることから始めます。
次に、テストを実行できる10Kリポジトリに焦点を当て、テストをパスすることでカバーされるすべての関数のバグの多いバージョンを作成します。
論文 参考訳(メタデータ) (2021-05-19T18:40:16Z) - Self-Supervised Log Parsing [59.04636530383049]
大規模ソフトウェアシステムは、大量の半構造化ログレコードを生成する。
既存のアプローチは、ログ特化や手動ルール抽出に依存している。
本稿では,自己教師付き学習モデルを用いて解析タスクをマスク言語モデリングとして定式化するNuLogを提案する。
論文 参考訳(メタデータ) (2020-03-17T19:25:25Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。