VNIT

Too lazy to think of a slogan

Trang chủ » Diễn Đàn » Lập trình và Phát triển Web » Windows Programming » Bug mà chưa nghĩ ra được là do ở đâu :((

Chủ đề đã bị khóa, bạn không thể xóa, sửa hay trả lời trong chủ đề này!

First Page Previous Page  1  Next Page Last Page
Locked Bug mà chưa nghĩ ra được là do ở đâu :((
0
question Gởi bởi batanlp (3:18 21-09-2010)
Bài: 431 / Điểm VCS: 311 /

Số là mình viết 1 soft tương tự như pé Norton Ghost nhưng chạy qua network, dùng TFTP protocol.

- ở client mình làm 2 partition, 1 partition (gọi là E:)format ở dạng FAT32, install WinXp (mới chỉ support được FAT32 thôi).
- backup partition E: tạo ra file backup là e_backup.img

- Restore file e_backup.img lên partition còn lại (gọi là F:)

- nếu F: ban đầu được format dưới định dạng là FAT32 thì restore đúng 100 %, check rất kỹ, và boot winxp = partition F này OK.
- nếu F: ban đầu được format dưới dạng NTFS thì sau khi restore thì khi compare 2 partition E: và F: có tầm khoảng 3-4 file ở F: losing data (vẫn mở file đó được nhưng nội dung bị mất 1 khúc). ở F này vẫn có khả năng boot

==> chưa biết lỗi ở đâu, do cơ chế NTFS với Fat32 khác nhau??? Hay code có lỗi, nhưng nếu code có lỗi thì Fat32 -> fat32 đã sai rồi (vi file backup của mình rất lớn, khoảng 3-10 GB nếu instal winxp và 1 ít soft nhỏ nhỏ).
  Ai hiểu rõ về mấy cái partition type hay có ý tưởng gì thì góp ý chút. Vì thực sự là bây giờ đang mò mẫm chứ chưa nghĩ ra được lý do nào cả
Ta cô đơn, đêm ơi, đêm uống chén
Cho đêm say, để lại đến mau ngày
Ngày lại ngày, cứ chếnh choáng, loay hoay
Chợt tỉnh say, tình theo mây, bay mất!

NBT
Locked Re: Bug mà chưa nghĩ ra được là do ở đâu :((
0
answer Gởi bởi Thành Bá Nguyễn (4:14 21-09-2010)
Bài: 18,319 / Điểm VCS: 17,795 /

Chắc là do code, có thể là do cơ chế restore.
Vì nếu ghi ở mức low level từng sector thì kiểu file system là gì đâu quan trọng, thậm chí đĩa chưa format cũng có thể restore được vì khi nó restore theo từng sector thì đĩa F sẽ thành FAT32 như đĩa E.
Trừ khi restore theo từng file thì có thể bị lỗi.
Hay giờ tạm thời thử fix bằng cách trước khi restore thì format luôn đĩa F thành FAT32 (quick format cho lẹ) rồi mới restore.
Locked Re: Bug mà chưa nghĩ ra được là do ở đâu :((
0
answer Gởi bởi batanlp (5:09 21-09-2010)
Bài: 431 / Điểm VCS: 311 /

Chắc là do code, có thể là do cơ chế restore.
Vì nếu ghi ở mức low level từng sector thì kiểu file system là gì đâu quan trọng, thậm chí đĩa chưa format cũng có thể restore được vì khi nó restore theo từng sector thì đĩa F sẽ thành FAT32 như đĩa E.
Trừ khi restore theo từng file thì có thể bị lỗi.
Hay giờ tạm thời thử fix bằng cách trước khi restore thì format luôn đĩa F thành FAT32 (quick format cho lẹ) rồi mới restore.


- Cùng 1 partition, data của partition đó ko đổi. Thì bất kỳ test nào cũng cho ra sai sót như nhau. Sai cùng vị trí, cùng output như nhau.
- test read/write với hard code offset đó, thì các hàm read/write success nhưng chạy xong thì output ra vẫn bị lỗi đó @@ => nghi ngờ NTFS có 1 số vùng memory đặc biệt nào đó mà sau khi write sẽ bị handle của window change lại.

- ko dùng format được vì soft sẽ chạy ở chế độ non-OS thì muốn format phải tự viết cái lệnh format lại :D

- toàn bộ các hàm được viết ở low level hết

- có 1 điểm lạ nữa là khi restore xong. Coi thông tin partition target = system management thì thấy là FAT32, nhưng coi thông thường bằng view property thì lại thấy là NTFS, re-boot lại mới change là FAT32

- backup/restore = cách tạo file chỉ mục các offset có data ==> nghi ngờ sau table MBR của NTFS có 1 số sector dự trữ mà ko tính tới
Ta cô đơn, đêm ơi, đêm uống chén
Cho đêm say, để lại đến mau ngày
Ngày lại ngày, cứ chếnh choáng, loay hoay
Chợt tỉnh say, tình theo mây, bay mất!

NBT
Locked Re: Bug mà chưa nghĩ ra được là do ở đâu :((
0
answer Gởi bởi Thành Bá Nguyễn (5:42 21-09-2010)
Bài: 18,319 / Điểm VCS: 17,795 /

Chạy ở chế độ non-OS thì làm sao mà "view properties thấy NTFS" được kà? Mà nếu chạy trong OS mode thì đúng là 1 số vùng của NTFS có thể sẽ được OS bảo vệ (ví dụ như thư mục System Volume Information, hoặc vùng reserve cho swap file). Nhưng nếu file bị lỗi nằm ngoài vùng này thì...không hiểu luôn. Coi thử có khi cái offset của vùng này nó nằm ở mức ranh giới 2g hay 4g không? Nằm ở ranh giới đó thì có thể bị lỗi do tràn số.

- có 1 điểm lạ nữa là khi restore xong. Coi thông tin partition target = system management thì thấy là FAT32, nhưng coi thông thường bằng view property thì lại thấy là NTFS, re-boot lại mới change là FAT32

Cái MBR nó cũng chứa thông tin về type của file system. Nhưng write lại cái sector chứa MBR cũng chưa chắc là đã effect ngay vì có thể nguyên cái nội dung của cái sector này đã được cache trước đó rồi nên reboot lại nó mới "ăn".
Locked Re: Bug mà chưa nghĩ ra được là do ở đâu :((
0
answer Gởi bởi batanlp (5:48 21-09-2010)
Bài: 431 / Điểm VCS: 311 /

Chạy ở chế độ non-OS thì làm sao mà "view properties thấy NTFS" được kà? Mà nếu chạy trong OS mode thì đúng là 1 số vùng của NTFS có thể sẽ được OS bảo vệ (ví dụ như thư mục System Volume Information, hoặc vùng reserve cho swap file). Nhưng nếu file bị lỗi nằm ngoài vùng này thì...không hiểu luôn. Coi thử có khi cái offset của vùng này nó nằm ở mức ranh giới 2g hay 4g không? Nằm ở ranh giới đó thì có thể bị lỗi do tràn số.

- có 1 điểm lạ nữa là khi restore xong. Coi thông tin partition target = system management thì thấy là FAT32, nhưng coi thông thường bằng view property thì lại thấy là NTFS, re-boot lại mới change là FAT32

Cái MBR nó cũng chứa thông tin về type của file system. Nhưng write lại cái sector chứa MBR cũng chưa chắc là đã effect ngay vì có thể nguyên cái nội dung của cái sector này đã được cache trước đó rồi nên reboot lại nó mới "ăn".


  Đúng là hiện tại đang test thì chạy ở OS mode, nhưng khi demo thì chắc chắn là phải non-OS mode. Nên những vùng như System Volume Information chỉ sợ là OS nó bảo kê mất, vì sai sót chỉ ở 1 chỗ duy nhất.


Coi thử có khi cái offset của vùng này nó nằm ở mức ranh giới 2g hay 4g không? Nằm ở ranh giới đó thì có thể bị lỗi do tràn số.

Không hiểu lắm ???
Ta cô đơn, đêm ơi, đêm uống chén
Cho đêm say, để lại đến mau ngày
Ngày lại ngày, cứ chếnh choáng, loay hoay
Chợt tỉnh say, tình theo mây, bay mất!

NBT
Locked Re: Bug mà chưa nghĩ ra được là do ở đâu :((
0
answer Gởi bởi Thành Bá Nguyễn (6:02 21-09-2010)
Bài: 18,319 / Điểm VCS: 17,795 /

Nếu read/write theo offset thì có thể đôi lúc sẽ gặp trường hợp thế này: read(buffer, startOffset, length).
Giả sử như startOffset ở gần mức 2Gb (tức 2^31) mà startOffset+length thì vượt qua mức này thì đôi khi có lỗi xảy ra do tràn số. Tương tự cho mức 4Gb.
Trường hợp này hiếm xảy ra nhưng cũng cứ kiểm tra lại xem sao.
First Page Previous Page  1  Next Page Last Page

Thống kê

Hiện tại web site có 85,779 thành viên. Xin chào đón thành viên mới nhất demoonhunters.

Các thành viên đã tạo 62,759 chủ đề và 241,881 bài viết trong 30 box.

Hiện có 3 thành viên và 1 khách đang trực tuyến.

fetelacad, demoonhunters, concua201010

Template by styleshout / Icons by Tango Icon Library and FamFamFam.