
Igor
26.06.2018
14:53:57
гм, а что-то я не припоминаю тут этой новости, непорядок
https://habr.com/company/kaspersky/blog/414123/

Max
26.06.2018
15:04:34

Oleg
26.06.2018
16:07:24
Может стоит начать мир на нем собирать

Suigintou45
26.06.2018
16:28:00

Google

Alexey
26.06.2018
16:33:49

yuri
26.06.2018
16:37:06
Как сохранять кодовую базу в актуальном состоянии? Читайте нашу статью в новом выпуске журнала "Никак".

Vhäldemar
26.06.2018
16:45:25

Suigintou45
26.06.2018
16:48:09

Chiveson
26.06.2018
17:03:01

Александр
26.06.2018
17:04:08

Suigintou45
26.06.2018
17:04:26

Vhäldemar
26.06.2018
17:05:16

Anton
26.06.2018
17:10:43
Ещё со строками веселье будет

Alexey
26.06.2018
17:20:37
а на хабре еще статья про c++20 не вышла?

Antony
26.06.2018
17:21:18

Suigintou45
26.06.2018
17:21:27

Alexey
26.06.2018
17:21:41

Google

Matwey
26.06.2018
17:24:12
Что такое НН?
А
HH

Anton
26.06.2018
17:25:03
utf8 ftw
Я про то, что придется делать что-то типа char str[256]; а если там пара символов в строке передаваться будет весь массив все равно...

Suigintou45
26.06.2018
17:25:34

Vhäldemar
26.06.2018
17:31:05

Igor
26.06.2018
17:35:08
прочитал в контексте "сбор пожертвований", долго думал

Vhäldemar
26.06.2018
17:51:56
щето?

/dev
26.06.2018
17:58:54

olologin
26.06.2018
18:01:29
https://msdn.microsoft.com/en-us/library/ms810466.aspx
Господа, я вот читаю про кучу под виндой, и мне стало интересно
Всегда ли при выделении или освобождении памяти происходит глобал лок?
Они вот пишут что вообще при работе с кучей такая синхронизация есть, но я правильно понимаю что они под работой с кучей имеют ввиду именно модификацию внутренних структур кучи в следствии выделения или освобождения памяти?
Иначе при синхронизации каждого обращения к памяти было бы слишком жёстко

Vhäldemar
26.06.2018
18:10:49
February 1999

Alexey
26.06.2018
18:11:45
это вообще для NT или для классики статья?

Vhäldemar
26.06.2018
18:12:31
для НТ
Improved locking inside the heap code. The heap code uses one lock per heap. This global lock is used for protecting the heap data structure for multithreaded usage. Unfortunately, in high-traffic scenarios, a heap can still get bogged down in this global lock, leading to high contention and poor performance. On Windows 2000, the critical region of code inside locks is reduced to minimize the probability of contention, thus improving scalability.
Use of Lookaside lists. The heap data structure uses a fast cache for all free items of blocks sized between 8 and 1,024 bytes (in 8-byte increments). The fast cache was originally protected within the global lock. Now lookaside lists are used to access the fast cache free list. These lists do not require locking, and instead use 64-bit interlocked operations, thus improving performance.
так что лок не всегда

Google

olologin
26.06.2018
18:15:27
А хз, просто хотел написать код для MiniDump'a, и мне начали втирать о том что дампить нужно из нового процесса, ибо при дампе MiniDumpWriteDump остановит все треды в процессе, и не сможет запросить память из кучи, если один из остановленных тредов захватил Хип лок
Похоже придется дампить из другого процесса

Vhäldemar
26.06.2018
18:16:33
а что пишут в мсдн про writedump?

olologin
26.06.2018
18:16:36
Я о таких тонкостях раньше не задумывался
а что пишут в мсдн про writedump?
MiniDumpWriteDump should be called from a separate process if at all possible, rather than from within the target process being dumped. This is especially true when the target process is already not stable. For example, if it just crashed. A loader deadlock is one of many potential side effects of calling MiniDumpWriteDump from within the target process.
Но они не пишут о конкретных причинах почему так надо делать
не понимаю что такое loader deadlock
http://stackoverflow.com/a/41433641/1889329
Вот мужик обьясняет почему надо из нового процесса запускать

Vhäldemar
26.06.2018
18:22:06
ну вот у тебя упало ты из того же дампишь, если и дампер упадёт, что очень вероятно - будет плохо, исключение в исключении

olologin
26.06.2018
18:22:40
А почему называется loader deadlock?
Ну в целом я понял
придётся переписать по уму

Nik
26.06.2018
18:30:52
А зачем изобретать велосипед, если есть procdump?

Vyacheslav
26.06.2018
18:31:22

Nik
26.06.2018
18:31:22
Который к тому же можно установить как системный дебагер и дампить все крэши в любых процессах?

Vyacheslav
26.06.2018
18:34:28

olologin
26.06.2018
18:35:54
Это тут упоминается

Google

Vhäldemar
26.06.2018
18:37:18

Egor
26.06.2018
18:44:13

olologin
26.06.2018
18:44:41
да не, это слишком жёстко
и оно требует конвертации дебаг инфы насколько я помню
у них там свой формат
чтоб статистику считать

Igor
26.06.2018
18:46:51
Иначе при синхронизации каждого обращения к памяти было бы слишком жёстко
за винду не поручусь, но в какой-то из стдлиб для це (кажется uclibc) в маллоке действительно есть синхронизация через муьютекс
находили треды по линуксу, где чуваки жаловались на тормоза и ловлю дедлоков из-за проблем с ним
и даже сами ловили нечто подобное под ARM при каких-то совершенно загадочных обстоятельствах

Alexey
26.06.2018
18:48:48
Погодите ка, а не из за схожей ли причине у меня мог быть дедлок в линуксе когда я включаю санитайзер в проекте использующем openmp?

Igor
26.06.2018
18:48:55
придётся переписать по уму
переписывай, а лучше возьми посоветованную гугловскую поделку. мы на свой mini-breakpad уже обплевались, в самых важных ситуациях он нам всегда выдаёт какую-нибудь дребедень

olologin
26.06.2018
18:49:13
слишком громоздко

/dev
26.06.2018
18:49:19

olologin
26.06.2018
18:49:33
у нас такой посмертный дебаггинг приходится делать раз в году
никто ради этого не будет гугловскую монстролибу разворачивать

/dev
26.06.2018
18:51:47

olologin
26.06.2018
18:51:59
Но я бы принял хорошую реализацию для стороннего процесса который дампит минидампы, если у вас есть :)
лень самому писать, но придётся
Вообще забавно, я никогда не думал о наличии синхронизации при выделении памяти
но я не представляю в каком софте это могут просто так делать

Google

olologin
26.06.2018
18:54:36
не в целях дебага
всмысле паузить треды

/dev
26.06.2018
18:56:23
всмысле паузить треды
Ну там не мютексы, а спинлоки. И там была багованная вставка в список чанков. Дедлок ловился под нагрузкой раз в ~5 часов на 8 ядрах

olologin
26.06.2018
18:57:56
да, сурово
такое наверное годами дебажат

/dev
26.06.2018
18:59:09

olologin
26.06.2018
18:59:39
?

Ilia
26.06.2018
19:02:42

Constantine
26.06.2018
19:20:35

Ilia
26.06.2018
19:21:11

Constantine
26.06.2018
19:21:59

Mikhail Voronov
26.06.2018
19:23:37

olologin
26.06.2018
19:26:06
соответственно если ты вызываешь минидамп в новом процессе то ему по барабану на кучу процесса который он будет дампить
потому как для своих нужд он выделит память в своём процессе

Mikhail Voronov
26.06.2018
19:31:04
точно, мне почему-то показалось, что он работает через инжект в сторонний процесс

/dev
26.06.2018
19:33:32