Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135

Битовые утечки при записи данных на диск

06.06.2016, 14:42. Показов 8261. Ответов 119
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня форумчане!
Сорри если оффтоп но... Пишу в консольке на C++ (MSVCE 2010) различные движки по расчетам и тут столкнулся с опасной проблемой.
При записи на диск искажаются данные на один бит, где то один раз на 109 - 1011 данных. Бит просто "теряется" (был 1 стал 0 или наоборот) , соответственно данные уже не верны, что приводит к нулю все проделанную работу.
Из исследованного:
Бит теряется при записи как в поток текстового значения переменных (типа fileout << a[i] << endl;)
Так и при записи в двоичном виде (типа fileout.write(reinterpret_cast<char*>(a),size*sizeof(a[0]));)
Замечено, что данные в памяти верные, т.к. были пойманы моменты при повторном выводе из того же массива все данные были записаны корректно.
Ошибка не зависит от винчестера на который данные были записаны (были записи на 3 различных винта, один из которых рейд массив).
Чаще всего теряется один из старших битов (типа 24-й бит в unsigned long или 24-й в unsigned long long). Других потерянных бит не замечено.
Термин "потерянный" возможно применяю в данном случае не верно. Т.к. заметно искажение только при его инвертировании. Соответственно если был сбой и он вместо 1 записал сбойную 1 - этого я не найду.
Система молчит про контроль целостности данных. Винт тоже. У винтов и рейда все показатели в порядке (блоки не сыпятся, SMART в порядке).

Сталкивался ли кто с подобным? В чем может быть проблема?

В ближайшем будущем хочу переустановить систему и MSVCE 2013. Но не уверен, что система виновата.
Кто что подскажет?
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2016, 14:42
Ответы с готовыми решениями:

ClientDataSet, Blob утечки памяти при записи в файл
столкнулся с такой ситуацией, есть ClientdataSet в котором есть блоб поле, которое я записываю процедурой ниже: Procedure...

При записи файлов на диск, комптютер выдал ошибку, что данный диск не может дальше использоваться
При записи файлов на диск, через некоторое время мой комптютер выдал ошибку, что данный диск не может дальше использоваться(или что-то...

При закачке игры на жесткий диск пишет "Ошибка при записи на диск"
БЕДА В СЕМЬЕ! В системе 2 жестких диска: первый - 250гб(разбит на 2 раздела), второй - 1тб Так вот, при попытке установить на жесткий...

119
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
15.06.2016, 16:59
Студворк — интернет-сервис помощи студентам
Вот что выдал gcc 4.9.3 с -O2:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
    .file   "main.cpp"
    .intel_syntax noprefix
# GNU C++ (Gentoo 4.9.3 p1.5, pie-0.6.4) version 4.9.3 (x86_64-pc-linux-gnu)
#   compiled by GNU C version 4.9.3, GMP version 6.0.0, MPFR version 3.1.3-p4, MPC version 1.0.2
# GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
# options passed:  -D_GNU_SOURCE main.cpp -masm=intel -mtune=generic
# -march=x86-64 -O2 -fverbose-asm -fstack-protector-strong
# options enabled:  -faggressive-loop-optimizations
# -fasynchronous-unwind-tables -fauto-inc-dec -fbranch-count-reg
# -fcaller-saves -fcombine-stack-adjustments -fcommon -fcompare-elim
# -fcprop-registers -fcrossjumping -fcse-follow-jumps -fdefer-pop
# -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively
# -fdwarf2-cfi-asm -fearly-inlining -feliminate-unused-debug-types
# -fexceptions -fexpensive-optimizations -fforward-propagate -ffunction-cse
# -fgcse -fgcse-lm -fgnu-runtime -fgnu-unique -fguess-branch-probability
# -fhoist-adjacent-loads -fident -fif-conversion -fif-conversion2
# -findirect-inlining -finline -finline-atomics
# -finline-functions-called-once -finline-small-functions -fipa-cp
# -fipa-profile -fipa-pure-const -fipa-reference -fipa-sra
# -fira-hoist-pressure -fira-share-save-slots -fira-share-spill-slots
# -fisolate-erroneous-paths-dereference -fivopts -fkeep-static-consts
# -fleading-underscore -flifetime-dse -fmath-errno -fmerge-constants
# -fmerge-debug-strings -fmove-loop-invariants -fomit-frame-pointer
# -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole
# -fpeephole2 -fprefetch-loop-arrays -free -freg-struct-return
# -freorder-blocks -freorder-blocks-and-partition -freorder-functions
# -frerun-cse-after-loop -fsched-critical-path-heuristic
# -fsched-dep-count-heuristic -fsched-group-heuristic -fsched-interblock
# -fsched-last-insn-heuristic -fsched-rank-heuristic -fsched-spec
# -fsched-spec-insn-heuristic -fsched-stalled-insns-dep -fschedule-insns2
# -fshow-column -fshrink-wrap -fsigned-zeros -fsplit-ivs-in-unroller
# -fsplit-wide-types -fstack-protector-strong -fstrict-aliasing
# -fstrict-overflow -fstrict-volatile-bitfields -fsync-libcalls
# -fthread-jumps -ftoplevel-reorder -ftrapping-math -ftree-bit-ccp
# -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-coalesce-vars
# -ftree-copy-prop -ftree-copyrename -ftree-cselim -ftree-dce
# -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre
# -ftree-loop-if-convert -ftree-loop-im -ftree-loop-ivcanon
# -ftree-loop-optimize -ftree-parallelize-loops= -ftree-phiprop -ftree-pre
# -ftree-pta -ftree-reassoc -ftree-scev-cprop -ftree-sink -ftree-slsr
# -ftree-sra -ftree-switch-conversion -ftree-tail-merge -ftree-ter
# -ftree-vrp -funit-at-a-time -funwind-tables -fverbose-asm
# -fzero-initialized-in-bss -m128bit-long-double -m64 -m80387
# -malign-stringops -mavx256-split-unaligned-load
# -mavx256-split-unaligned-store -mfancy-math-387 -mfp-ret-in-387 -mfxsr
# -mglibc -mieee-fp -mlong-double-80 -mmmx -mno-sse4 -mpush-args -mred-zone
# -msse -msse2 -mtls-direct-seg-refs -mvzeroupper
 
    .section    .rodata.str1.1,"aMS",@progbits,1
.LC0:
    .string "Table asc ready. Read:"
.LC1:
    .string "%d"
    .section    .rodata.str1.8,"aMS",@progbits,1
    .align 8
.LC2:
    .string "\nError at adr(%X). Value: %X must be: %X\n"
    .section    .rodata.str1.1
.LC3:
    .string "Table clear ready. Read:"
    .section    .rodata.str1.8
    .align 8
.LC4:
    .string "\nError at adr(%X). Value: %X must be: 0\n"
    .section    .rodata.str1.1
.LC5:
    .string "Table bit ready. Read:"
.LC6:
    .string "Table asc2 ready. Read:"
.LC7:
    .string "Array at addres (%X). \n"
    .section    .text.unlikely,"ax",@progbits
.LCOLDB8:
    .section    .text.startup,"ax",@progbits
.LHOTB8:
    .p2align 4,,15
    .globl  main
    .type   main, @function
main:
.LFB45:
    .cfi_startproc
    push    r13 #
    .cfi_def_cfa_offset 16
    .cfi_offset 13, -16
    push    r12 #
    .cfi_def_cfa_offset 24
    .cfi_offset 12, -24
    push    rbp #
    .cfi_def_cfa_offset 32
    .cfi_offset 6, -32
    push    rbx #
    .cfi_def_cfa_offset 40
    .cfi_offset 3, -40
    sub rsp, 8  #,
    .cfi_def_cfa_offset 48
.L2:
    movabs  rdi, 8589934592 #,
    call    malloc  #
    mov esi, OFFSET FLAT:.LC7   #,
    mov rdx, rax    #, b
    mov r12, rax    # b,
    mov edi, 1  #,
    xor eax, eax    #
    call    __printf_chk    #
    mov eax, 50331648   # ivtmp.97,
    .p2align 4,,10
    .p2align 3
.L3:
    mov QWORD PTR [r12-402653184+rax*8], rax    # MEM[base: b_35, index: ivtmp.97_2, step: 8, offset: -402653184B], ivtmp.97
    add rax, 1  # ivtmp.97,
    cmp rax, 1124073472 # ivtmp.97,
    jne .L3 #,
    mov esi, OFFSET FLAT:.LC0   #,
    mov edi, 1  #,
    xor eax, eax    #
    xor r13d, r13d  # m
    call    __printf_chk    #
.L6:
    mov edx, r13d   #, m
    mov esi, OFFSET FLAT:.LC1   #,
    mov edi, 1  #,
    xor eax, eax    #
    mov rbp, r12    # ivtmp.83, b
    mov ebx, 50331648   # c,
    call    __printf_chk    #
    .p2align 4,,10
    .p2align 3
.L5:
    mov rcx, QWORD PTR [rbp+0]  # D.3998, MEM[base: _45, offset: 0B]
    cmp rcx, rbx    # D.3998, c
    je  .L4 #,
    mov r8, rbx #, c
    mov rdx, rbp    #, ivtmp.83
    mov esi, OFFSET FLAT:.LC2   #,
    mov edi, 1  #,
    xor eax, eax    #
    call    __printf_chk    #
.L4:
    add rbx, 1  # c,
    add rbp, 8  # ivtmp.83,
    cmp rbx, 1124073472 # c,
    jne .L5 #,
    cmp r13d, 1 # m,
    jne .L19    #,
    mov edi, 10 #,
    movabs  rbp, 8589934592 # tmp172,
    call    putchar #
    add rbp, r12    # D.4000, b
    mov rax, r12    # ivtmp.73, b
    .p2align 4,,10
    .p2align 3
.L7:
    mov QWORD PTR [rax], 0  # MEM[base: _55, offset: 0B],
    add rax, 8  # ivtmp.73,
    cmp rax, rbp    # ivtmp.73, D.4000
    jne .L7 #,
    mov esi, OFFSET FLAT:.LC3   #,
    mov edi, 1  #,
    xor eax, eax    #
    xor r13d, r13d  # m
    call    __printf_chk    #
.L10:
    mov edx, r13d   #, m
    mov esi, OFFSET FLAT:.LC1   #,
    mov edi, 1  #,
    xor eax, eax    #
    mov rbx, r12    # ivtmp.59, b
    call    __printf_chk    #
    jmp .L9 #
    .p2align 4,,10
    .p2align 3
.L8:
    add rbx, 8  # ivtmp.59,
    cmp rbp, rbx    # D.4000, ivtmp.59
    je  .L39    #,
.L9:
    mov rcx, QWORD PTR [rbx]    # D.3998, MEM[base: _57, offset: 0B]
    test    rcx, rcx    # D.3998
    je  .L8 #,
    mov rdx, rbx    #, ivtmp.59
    xor eax, eax    #
    mov esi, OFFSET FLAT:.LC4   #,
    mov edi, 1  #,
    add rbx, 8  # ivtmp.59,
    call    __printf_chk    #
    cmp rbp, rbx    # D.4000, ivtmp.59
    jne .L9 #,
.L39:
    cmp r13d, 1 # m,
    jne .L20    #,
    mov edi, 10 #,
    call    putchar #
    mov rax, r12    # ivtmp.51, b
    .p2align 4,,10
    .p2align 3
.L11:
    mov QWORD PTR [rax], -1 # MEM[base: _66, offset: 0B],
    add rax, 8  # ivtmp.51,
    cmp rax, rbp    # ivtmp.51, D.4000
    jne .L11    #,
    mov esi, OFFSET FLAT:.LC5   #,
    mov edi, 1  #,
    xor eax, eax    #
    xor r13d, r13d  # m
    call    __printf_chk    #
.L14:
    mov edx, r13d   #, m
    mov esi, OFFSET FLAT:.LC1   #,
    mov edi, 1  #,
    xor eax, eax    #
    mov rbx, r12    # ivtmp.37, b
    call    __printf_chk    #
    .p2align 4,,10
    .p2align 3
.L13:
    mov rcx, QWORD PTR [rbx]    # D.3998, MEM[base: _68, offset: 0B]
    cmp rcx, -1 # D.3998,
    je  .L12    #,
    mov r8, -1  #,
    mov rdx, rbx    #, ivtmp.37
    mov esi, OFFSET FLAT:.LC2   #,
    mov edi, 1  #,
    xor eax, eax    #
    call    __printf_chk    #
.L12:
    add rbx, 8  # ivtmp.37,
    cmp rbp, rbx    # D.4000, ivtmp.37
    jne .L13    #,
    cmp r13d, 1 # m,
    jne .L21    #,
    mov edi, 10 #,
    call    putchar #
    mov eax, 50331648   # c,
    .p2align 4,,10
    .p2align 3
.L15:
    mov QWORD PTR [r12-402653184+rax*8], rax    # MEM[base: b_35, index: c_131, step: 8, offset: -402653184B], c
    add rax, 1  # c,
    cmp rax, 1124073472 # c,
    jne .L15    #,
    mov esi, OFFSET FLAT:.LC6   #,
    mov edi, 1  #,
    xor eax, eax    #
    xor r13d, r13d  # m
    call    __printf_chk    #
.L18:
    mov edx, r13d   #, m
    mov esi, OFFSET FLAT:.LC1   #,
    mov edi, 1  #,
    xor eax, eax    #
    mov rbp, r12    # ivtmp.12, b
    mov ebx, 50331648   # c,
    call    __printf_chk    #
    .p2align 4,,10
    .p2align 3
.L17:
    mov rcx, QWORD PTR [rbp+0]  # D.3998, MEM[base: _80, offset: 0B]
    cmp rcx, rbx    # D.3998, c
    je  .L16    #,
    mov r8, rbx #, c
    mov rdx, rbp    #, ivtmp.12
    mov esi, OFFSET FLAT:.LC2   #,
    mov edi, 1  #,
    xor eax, eax    #
    call    __printf_chk    #
.L16:
    add rbx, 1  # c,
    add rbp, 8  # ivtmp.12,
    cmp rbx, 1124073472 # c,
    jne .L17    #,
    cmp r13d, 1 # m,
    jne .L22    #,
    mov edi, 10 #,
    call    putchar #
    mov rdi, r12    #, b
    call    free    #
    jmp .L2 #
.L21:
    mov r13d, 1 # m,
    jmp .L14    #
.L22:
    mov r13d, 1 # m,
    jmp .L18    #
.L20:
    mov r13d, 1 # m,
    jmp .L10    #
.L19:
    mov r13d, 1 # m,
    jmp .L6 #
    .cfi_endproc
.LFE45:
    .size   main, .-main
    .section    .text.unlikely
.LCOLDE8:
    .section    .text.startup
.LHOTE8:
    .ident  "GCC: (Gentoo 4.9.3 p1.5, pie-0.6.4) 4.9.3"
    .section    .note.GNU-stack,"",@progbits
Добавлено через 4 минуты
Вот внутренняя часть цикла msvc:
Assembler
1
2
3
4
5
6
7
8
9
10
$LL40@main:
 
; 19   :            b[i]=k+i;
 
movsxd   rcx, eax
inc  rdx
inc  eax
mov  QWORD PTR [rbp+rdx*8-8], rcx
cmp  rdx, 1073741824        ; 40000000H
jl   SHORT $LL40@main
А вот gcc:
Assembler
1
2
3
4
5
.L3:
    mov QWORD PTR [r12-402653184+rax*8], rax    # MEM[base: b_35, index: ivtmp.97_2, step: 8, offset: -402653184B], ivtmp.97
    add rax, 1  # ivtmp.97,
    cmp rax, 1124073472 # ivtmp.97,
    jne .L3 #,
Код достаточно разный.
1
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
15.06.2016, 17:26  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
немигая смотреть на черный экран? зашбсь
Последствия "облегчения".
Командная строка с офигенским количеством строк...
За полтора часа в 2 гиговом тесте не обнаружено никаких ошибок. :/
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.06.2016, 18:18
Цитата Сообщение от vxg Посмотреть сообщение
Petrolion, интересно как вы думаете ловить ошибку при долгом тесте если код не останавливается при ее определении а пашет дальше с отключенным логом в файл?
В случае ошибки же печать срабатывает
1
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
15.06.2016, 18:27
Evg, и как я завтра об этом узнаю спустя сто строк?
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.06.2016, 18:34
А... там ещё и левые печати... Ну тогда для порядку исходник поправить так, чтоб работал до первой ошибки. Ведь важно выяснить факт, есть ошибка, или нет. А сколько раз - уже не так важно
1
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
15.06.2016, 18:43  [ТС]
vxg, в приаттаченном файле старый вариант с логом для 2 гиг.
У меня на 8 гиг один полный цикл выполняется соответственно в 4 раза дольше и записей в логах получается меньше.
Все же не могли бы вы скомпилить для меня в вашем компиляторе пример на 8 гиг. Сколько двушки не гоняю - не ловится ошибка.
Вложения
Тип файла: zip proba_exe.zip (11.6 Кб, 1 просмотров)
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
15.06.2016, 18:56
Petrolion, завтра утром так как с таким насилием над жестким боюсь оставлять на ночь

Добавлено через 1 минуту
Petrolion, сделали бы уже задание размера или несколько сборок - может на моей сборке не будет ошибки по др причинам
1
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
15.06.2016, 20:05  [ТС]
vxg, Можно указывать n через cin >> n;.
Хотел сделать забор всей доступной памяти (с небольшим резервом), но винда сильно фрагментирует память. Не всегда запускается такой код.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
15.06.2016, 20:43
Petrolion, этого в коде нет а как это сделать 101 способом я и так знаю . Замечание о фрагментации спорно
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.06.2016, 20:56
Количество памяти можно задать в виде отдельной глобальной переменной, так её проще будет исправлять в ассемблерном коде. Но когда количество итераций в цикле не является константой, то компилятор может построить немного другой код. Видя константу, компилятор понимает, что она большая и может построить цикл по другому, чем в варианте, когда количество итераций неизвестно. Маловероятно, что для x86-64 такое есть, но на всякий случай в таких вариантах надо глазами на ассемблерный код посмотреть, чтобы убедиться, что тело цикла осталось более-менее таким же
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
15.06.2016, 22:52
Цитата Сообщение от Petrolion Посмотреть сообщение
Начал собирать вещички... (инфу которую нужно перенести в новую систему).
При переносе учтите что инсталятор лайва не дружит с EFI (разработчики обещают поправить, но воз и ныне там). Так что если у вас EFI, для установки Дебиана на диск нужно брать именно инсталяционный образ, а не лайв.
1
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
04.08.2016, 21:58  [ТС]
Доброго времени суток форумчане!
Свой топик не забыл и отчитываюсь как и обещал.
Нашел образ своей системы годовалой давности.

Не по теме:

(К сожалению первичный образ "новой" системы помер вместе с полуторатерабайтным винтом)

Накатил, запустил тест. Результат просто ужасающий! Потери битов были в различных местах и вообще иногда по два бита в одном значении. Суммарное количество ошибок выросло раза в три!
Понял, что моя дружба с этим вариантом установки закончена.
Затем долгое время был вдали от компа (различные проблемы).
Но вот таки установил систему. Опять Windows 7 SP1 с кумулятивными обновлениями по 14 год. Дрова, софты. MS VS 2015 Community.

Не по теме:

(Никаких других обновлений из инета не ставил, только стоит то что сами софты с собой тащат. Опять куча твиков для SSD и прочие настройки.)

Запустил тест. Более суток непрерывной работы с пересадками по разным ядрам и ни одной ошибки!
Все же проблема оказалась в закривленной системе Windows 7, а не в VC. Правда у меня в голове ни как не укладывается как можно "терять" биты в одном значении... и что для этого "специально" нужно делать.

Оставил половину SSD под Debian (хочу первой системой его) и два раздела на HDD для него. Альтернатива никогда не будет лишней.
Всем участвующим в моей проблеме - огромное спасибо! Вы подошли к исследованиям как настоящие профессионалы! Надеюсь мой горький опыт когда-нибудь и вам пригодится (не дай Гейтс!).
Удачи всем!
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.08.2016, 22:10
Цитата Сообщение от Petrolion Посмотреть сообщение
fbin.write(reinterpret_cast<char*>(b),n* sizeof(b[0]));
char он вообще от signed отсода и проблемы а темболее с реинтерпритом.
На С++ это писать надо а на непонятно чем. а на С++ будет вот так:
C++
1
fbin.write((void *)b,n*sizeof(b[0]));
и читать соответственно так же.
0
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
04.08.2016, 23:37  [ТС]
Fulcrum_013, Извините, но вы немного не в тему. Чуть дальше прочитайте. Проблемы были не оттуда.
Проблемы были в памяти, а не при записи.
А реинтерпрет я пользовал часто и густо (возможно к своему стыду), никогда проблем не возникало.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.08.2016, 23:41
Цитата Сообщение от Petrolion Посмотреть сообщение
реинтерпрет я пользовал часто и густо (возможно к своему стыду), никогда проблем не возникало
Просто некоторым функциям тип данных знать не нужно, а только размер. Поэтому и отдавать им надо void*.
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
05.08.2016, 01:08
Fulcrum_013, а ничего что функция std::ostream::write имеет прототип
C++
1
ostream& write (const char* s, streamsize n);
?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.08.2016, 01:31
Цитата Сообщение от Toshkarik Посмотреть сообщение
а ничего что функция std::ostream::write имеет прототип
В бинарный файл? всегда говорил в топку STD
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
05.08.2016, 19:31
Цитата Сообщение от Petrolion Посмотреть сообщение
Все же проблема оказалась в закривленной системе Windows 7, а не в VC. Правда у меня в голове ни как не укладывается как можно "терять" биты в одном значении... и что для этого "специально" нужно делать
Когда происходит обращение к памяти по валидному, но неподкачанному в физпамять адресу, случается прерывание и информаци о непрошедшем обращении в память складывается в специальный "подвал". Далее операционная система извлекает оттуда информацию и переисполняет. Наличие аппаратной ошибки в процессоре в принципе может привести к тому, что на разных ОС исходная ошибка проявляется по разному (или не проявляется). За счёт того, что постоянно работает скрытый от пользователя код по обработке подвала
0
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
06.08.2016, 01:25  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Когда происходит обращение к памяти по валидному, но неподкачанному в физпамять адресу, случается прерывание и информаци о непрошедшем обращении в память складывается в специальный "подвал". Далее операционная система извлекает оттуда информацию и переисполняет. Наличие аппаратной ошибки в процессоре в принципе может привести к тому, что на разных ОС исходная ошибка проявляется по разному (или не проявляется). За счёт того, что постоянно работает скрытый от пользователя код по обработке подвала
Вы имеете ввиду кэш? Потому как проблему с файлом подкачки отмел сразу. Отключением оного.
Инсталляция исходной винды немного другая (на пару лет свежее), но откат на систему годовалой давности показал ее полное фиаско.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.08.2016, 21:59
Нет, это специальный буфер, предназначенный для доисполнения в ОС сломавшихся операций обращения в память

Добавлено через 59 секунд
Хотя может на интеле его и нет...

Добавлено через 3 минуты
Да, что-то меня понесло, в интеле его нет

Правда теперь нет нормальных идей о том, как ОС в твоём случае могла повлиять на отдельные биты. Разве что опять код ядра создавал специфичный контекст для возникновения аппаратной ошибки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.08.2016, 21:59

При закачке игры на жесткий диск пишет "Ошибка при записи на диск"
В системе 2 жестких диска. Так вот, при попытке установить на жесткий диск игры со стима пишет &quot;Ошибка при записи на диск&quot;,...

Измерить скорость чтения и записи данных на диск
Определить скорости чтения и записи блока данных доступных для чтения и записи логических дисков. Провести 4 эксперимента (для чтения) -...

Ошибка при записи на диск
Здравствуйте, у меня возникла проблема с жесткими дисками. Многим известна игровая платформа Steam. Недавно я обновлял одну из своих...

Ошибки при записи на DVD диск
Помогите, пожалуйста, разобраться со следующей ситуацией. Занимался записью iso-образов на DVD диск, для записи использовал программу...

Жесткий диск тормозит при записи на него
У меня есть старый компьютер с процессором Celeron 1700 MHz. Выпуска начала 2000-х. Это мой первый компьютер, сейчас он используется для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru