changeset 33:37d843c14923

resolve 2GB problem
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Mon, 03 Feb 2014 23:26:38 +0900
parents 07176dd2dddc
children 1583df6c9b6e
files 2014/February/memo/03rd.txt 2014/OUTLINE
diffstat 2 files changed, 53 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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 以上の数値を突っ込んでいたので、オーバーフローしていた
--- 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]