@ProCxx

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

Max
26.06.2018
15:04:34
clang собирает за 4 минуты.
у меня обычно шланг медленее собирал но зато и меньше ресурсов хавал

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
зачем апгрейдить текстовые протоколы?..
это стильно, посмотри на протобуф, нопреме, его же пишет сам гугл! а jsonb?

Suigintou45
26.06.2018
16:48:09
это стильно, посмотри на протобуф, нопреме, его же пишет сам гугл! а jsonb?
а ведь можно просто обычный struct как есть ввалить. бинарный формат.

Александр
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
Ещё нет :( Но уже вот-вот
ok. спасибо за инфу ?

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

А

HH

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

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

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

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?

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

Vyacheslav
26.06.2018
18:34:28
не понимаю что такое loader deadlock
А где в посте на SO упоминается именно Loader Deadlock?

olologin
26.06.2018
18:35:54
А где в посте на SO упоминается именно Loader Deadlock?
https://docs.microsoft.com/en-us/windows/desktop/api/minidumpapiset/nf-minidumpapiset-minidumpwritedump

Это тут упоминается

А зачем изобретать велосипед, если есть procdump?
его можно вызывать из своего кода при креше?

Google
Vhäldemar
26.06.2018
18:37:18
Egor
26.06.2018
18:44:13
придётся переписать по уму
у гугла есть комбайн https://github.com/google/breakpad

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:33
у нас такой посмертный дебаггинг приходится делать раз в году

никто ради этого не будет гугловскую монстролибу разворачивать

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

лень самому писать, но придётся

Вообще забавно, я никогда не думал о наличии синхронизации при выделении памяти

В glibc синхронизация на спинлоках. Из-за этого и багов в ней ловил дедлоки на 5й красношляпе
А какие могут быть проблемы с синхронизацией? Я вот думаю что проблемы возникнут только если начать останавливать треды

но я не представляю в каком софте это могут просто так делать

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
такое наверное годами дебажат
С момента коммита бага до закрытия его в трекере прошло 9 лет

olologin
26.06.2018
18:59:39
?

Ilia
26.06.2018
19:02:42
Иначе при синхронизации каждого обращения к памяти было бы слишком жёстко
Так а как ты думал? Всё жёстка! Правда, какие-то блоки (выделенные уже из хипа ОS) могут быть прикреплены к конкретному потоку, и если вызываются оттуда, не лочиться... Но в целом -- да, это всё жёстко.

Ilia
26.06.2018
19:21:11
Constantine
26.06.2018
19:21:59
Вроде нигде не оговаривается.
В стандарте было то ли для маллок то ли для нью. А еще требования паддить на 64 в амд64 по факту

Mikhail Voronov
26.06.2018
19:23:37
А хз, просто хотел написать код для MiniDump'a, и мне начали втирать о том что дампить нужно из нового процесса, ибо при дампе MiniDumpWriteDump остановит все треды в процессе, и не сможет запросить память из кучи, если один из остановленных тредов захватил Хип лок
не очень понятно, а в чём разница именно для лока кучи при запуске MiniDumpWriteDump из своего процесса или из удалённого? Всё равно ведь ему придётся память выделять и наверняка внутри MiniDumpWriteDump создаёт свою кучу и делает все аллокации там.

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

потому как для своих нужд он выделит память в своём процессе

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

/dev
26.06.2018
19:33:32
точно, мне почему-то показалось, что он работает через инжект в сторонний процесс
Это если у тебя хитро закрученная система инжектов с дллкой

Страница 2159 из 2477