フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援
フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援

php-master-changes 2018-09-28

今日はオブジェクト生成処理の誤りで SEGV が出る場合がある問題の修正があった!

2018-09-28

nikic: Fixed bug #76846

  • github.com/php/php-src/commit/45cdcb2d0be89fe7bc404dd150240ec83f5de401
  • [7.1~]
  • memory_limit を越えたメモリ確保でエラー終了する際、register_shutdown_function() のハンドラ内でのオブジェクト生成が SEGV を起こす問題の修正
  • メモリマネージャーがエラーを検知して終了する際、zend_bailout() が呼ばれ、これは内部で longjmp() か、あれば siglongjmp() する奴
  • オブジェクト生成で EG(objects_store).object_buckets のリサイズが発生する際、先に EG(objects_store).size を 2 倍に更新してからメモリマネージャーに実際のリサイズをさせる、というのが元々の処理だった
  • 結果、リサイズできず途中でベイルアウトしてシャットダウンハンドラがオブジェクトを確保しようとすると、オブジェクトストアの実際のサイズを超えて書き込もうとしてしまう
  • EG(objects_store).size を 2 倍に更新するのをリサイズ成功後にして修正

nikic: Fix test for release builds

[紹介元] PHPタグが付けられた新着投稿 – Qiita php-master-changes 2018-09-28

コメント

記事に戻る

コメントを残す