# HG changeset patch # User Masataka Kohagura # Date 1391437598 -32400 # Node ID 37d843c14923218ac93976d881b7dcb664fd8ad6 # Parent 07176dd2dddc379f16f90fed7ba3fbea34deef1a resolve 2GB problem diff -r 07176dd2dddc -r 37d843c14923 2014/February/memo/03rd.txt --- a/2014/February/memo/03rd.txt Mon Feb 03 20:35:58 2014 +0900 +++ b/2014/February/memo/03rd.txt Mon Feb 03 23:26:38 2014 +0900 @@ -18,3 +18,54 @@ divide read mode 時、wbuf の address の動きが怪しい long だと MAX が約2GB。つまりどこかで long long にしないとこれは直らない。 + + read_run 内の + read->set_outData(0,w->file_mmap + w->read_task_number*w->read_division_size, w->read_division_size); + 第二引数 の値がおかしくなっていることが発覚 + + 実行結果 + + ---------------------- + set_outData buf : 0x24367a000 + w->file_mmap : 0x1c467a000 + w->read_task_number : 127 + w->read_division_size : 16777216 + ---------------------- + [read No 105 : wbuf addr 0x22d67a000] + [read No 106 : wbuf addr 0x22e67a000] + [read No 107 : wbuf addr 0x22f67a000] + ・・・ + [read No 120 : wbuf addr 0x23c67a000] + [read No 121 : wbuf addr 0x23d67a000] + ---------------------- + set_outData buf : 0x14467a000 + w->file_mmap : 0x1c467a000 + w->read_task_number : 128 + w->read_division_size : 16777216 + ---------------------- + ---------------------- + set_outData buf : 0x14567a000 + w->file_mmap : 0x1c467a000 + w->read_task_number : 129 + w->read_division_size : 16777216 + ---------------------- + + 再実行 + [read No 124 : wbuf addr 0x24067a000] + [read No 125 : wbuf addr 0x24167a000] + [read No 126 : wbuf addr 0x24267a000] + [read No 127 : wbuf addr 0x24367a000] + [read No 128 : wbuf addr 0x14467a000] + [read No 129 : wbuf addr 0x14567a000] + [read No 130 : wbuf addr 0x14667a000] + 876543210 + 16^8 = 2^4^8 = 2^32 + + Address が 2^32 分落ちてしまっている。 + (オーバーフローしている) + + 原因究明 + (char*)w->file_mmap + (int)w->read_task_number*(int)w->read_division_size + (int)w->read_task_number*(int)w->read_division_size + + int に 2GB 以上の数値を突っ込んでいたので、オーバーフローしていた diff -r 07176dd2dddc -r 37d843c14923 2014/OUTLINE --- a/2014/OUTLINE Mon Feb 03 20:35:58 2014 +0900 +++ b/2014/OUTLINE Mon Feb 03 23:26:38 2014 +0900 @@ -1,6 +1,7 @@ -2014/02/02 (Sun) +2014/02/03 (Mon) [memo] wbuf の address が 2GB 程度でおかしい挙動をする。それの調査。 + 2GB 以上でおかしくなっていた問題を解決。 2014/02/02 (Sun) [memo]