-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog
601 lines (468 loc) · 13.2 KB
/
ChangeLog
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
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
10-11-2020
==========
Initial code written.
11-29-2020
==========
FIX: Logger format %d to %lu.
FIX: warning: "std::fstream {anonymous}::FileForReadWrite::fd [-Wreorder]"
FIX: Class MemoryFunctions must me instantiated on each hooked function to prevent segfault on dlsym() call.
11-30-2020
==========
IMPROVEMENT: Added static buffer for output to avoid malloc.
FIX: Removed calloc overriding due to dlsym() implementations with 32 bytes calloc, which can lead to endless recursion;
due to calloc implementations uses malloc in most cases, this do not skew overall statistics.
However, this leads better compatibility with different libC/glibC.
IMPROVEMENT: Added --enable-static-libs configuration option to build reporting tool static.
12-07-2020
==========
IMPROVEMENT: Timing added.
IMPROVEMENT: Empty results array processing.
FIX: Typo in printReport(), allc_more not counted.
FIX: Division by zero.
04-02-2021
==========
IMPROVEMENT: Logger library refactoring.
04-05-2021
==========
FIX: Protect output with lock to prevent interleaving with threaded environment.
04-06-2021
==========
FIX: Crash reporter on garbage in memory logs.
04-07-2021
==========
IMPROVEMENT: Logger refactored.
FIX: Some minor fixes.
FIX: Crash on empty log lines.
04-09-2021
==========
IMPROVEMENT: Speed up processing ~20%.
04-12-2021
==========
FIX: Borders of ranges.
04-14-2021
==========
IMPROVEMENT: Reporter refactored.
04-15-2021
==========
FIX: Bug with overwriting output file.
04-17-2021
==========
IMPROVEMENT: A bit more optimization of reporting tool.
FIX: Code formatting.
04-18-2021
==========
IMPROVEMENT: Reporter reworked.
04-25-2021
==========
IMPROVEMENT: Uses std::stoul() for string conversion.
04-28-2021
==========
IMPROVEMENT: Got rid unnesessary implicit type conversion.
05-12-2021
==========
IMPROVEMENT: processData() refactored to reduce unnesessary movements.
FIX: Added missed header inclusion.
05-15-2021
==========
IMPROVEMENT: Reporter reworked; performance improvement.
05-16-2021
==========
FIX: Move unnesessary globals to private.
05-23-2021
==========
IMPROVEMENT: Hide all globals into private.
05-27-2021
==========
IMPROVEMENT: Added conrer case condition to fillArrayEntry().
IMPROVEMENT: Got rid stupid pass by reference for timestamp.
FIX: Warning "Likely uninitialized read (variable v_sum)".
FIX: MemoryLoggerFunctions reorder initialization warning.
05-30-2021
==========
IMPROVEMENT: Returned back correct implementation of calloc interposition.
FIX: Wrong counting inner malloc calls inside realloc&calloc.
05-31-2021
==========
IMPROVEMENT: Logger reworked with singleton pattern.
06-01-2021
==========
IMPROVEMENT: Feature added - log to file instead stderr.
06-10-2021
==========
IMPROVEMENT: Code restructured.
06-12-2021
==========
IMPROVEMENT: Move semantic implemented in fillArrayEntry().
06-19-2021
==========
IMPROVEMENT: Replaced C-style cast to C++.
IMPROVEMENT: Added compiler version check to headers.
FIX: Potential UB with casting a function pointer to a different function pointer.
06-20-2021
==========
IMPROVEMENT: Added print elapsed logging time.
FIX: "No other calls found" message output.
FIX: Minor wix with malloc function ptr argument.
07-19-2021
==========
IMPROVEMENT: Added max size feature.
08-09-2021
==========
IMPROVEMENT: Replaced C-array to std::array.
IMPROVEMENT: Max size feature now count over all logged allocations.
FIX: Segfault on mutex_lock_impl() calls and similar.
08-10-2021
==========
IMPROVEMENT: Do not log calloc() inner malloc() calls.
IMPROVEMENT: Performance malloc() internal processing.
FIX: Wrong counting if allocations fit one epoch tick.
FIX: Deadlock on __cxa_guard_acquire.
06-05-2022
==========
IMPROVEMENT: Completely reworked; memlogger-report log processor no more requires. Instant report with O(1) complexity.
IMPROVEMENT: Reduced counter array locking. Huge refactoring and optimization.
FIX: Hang on __futex_abstimed_wait_common () from /usr/lib/libc.so.6 on Linux.
FIX: warning: logical not is only applied to the left hand side of this comparison.
FIX: clang++: warning: -ldl: 'linker' input unused.
06-06-2022
==========
IMPROVEMENT: Refactored fillArrayEntry().
IMPROVEMENT: Refactored class MemoryLoggerFunctions.
06-07-2022
==========
FIX: Deadlock on __cxa_guard_acquire regression on file operation.
06-08-2022
==========
IMPROVEMENT: Made m_OutputFile, m_fd local.
06-11-2022
==========
IMPROVEMENT: Globals refactoring.
06-17-2022
==========
IMPROVEMENT: fillArrayEntry() refactoring. Now() made private.
FIX: Unnesessary defines deleted.
07-01-2022
==========
IMPROVEMENT: Made globals class members.
07-16-2022
==========
FIX: Minor code style fix.
07-17-2022
==========
IMPROVEMENT: Added rounding up allocation sizes up to a whole page of OS memory to make more accuracy.
07-26-2022
==========
FIX: Removed unnesessary function call from signal_handler().
07-27-2022
==========
IMPROVEMENT: Removed unnesessary code.
08-03-2022
==========
IMPROVEMENT: Max peak allocations per second added.
FIX: Regression introduced in 2.0.5.
FIX: Some minor bugs.
08-09-2022
==========
IMPROVEMENT: Refactoring.
08-12-2022
==========
IMPROVEMENT: Replaced sleep_for() to conditional variable wait to prevent delay on exit.
08-13-2022
==========
IMPROVEMENT: Added hh:mm:ss elapsed time format.
10-20-2022
==========
IMPROVEMENT: Added spurious wakeups protection.
10-22-2022
==========
IMPROVEMENT: AdaptiveSpinMutex improved.
10-26-2022
==========
IMPROVEMENT: Replaced wait_until to wait_for in timer thread.
12-23-2022
==========
IMPROVEMENT: Removed unnesessary return by reference.
IMPROVEMENT: Refactoring - templated main classes.
12-27-2022
==========
IMPROVEMENT: Refactoring.
01-03-2023
==========
IMPROVEMENT: Refactoring - made class AdaptiveSpinMutex inner.
01-03-2023
==========
IMPROVEMENT: More refactoring - the inner class is defined outside the body of the main class.
01-17-2023
==========
FIX: Partially rollback change 2.0.16 due to can cause deadlock on some OSes.
01-18-2023
==========
IMPROVEMENT: Refactoring.
IMPROVEMENT: Added periodically flush allocation report on disk when MEMLOGGER_LOG_FILENAME is specified.
IMPROVEMENT: Reduced data array locking.
IMPROVEMENT: Renamed shown peak values name.
FIX: Wrong peak values counting.
FIX: Peak values computing.
01-22-2023
==========
IMPROVEMENT: malloc_mf_impl() micro-optimization.
01-24-2023
==========
IMPROVEMENT: Replaced preprocessor defines with enum.
FIX: Dead code eliminated.
01-27-2023
==========
IMPROVEMENT: Decompose printReportTotal() function.
IMPROVEMENT: Memory functions names replaced to constexpr.
04-02-2023
==========
IMPROVEMENT: Moved interposition implementations to class.
IMPROVEMENT: Moved enum inside class.
FIX: Call non-constructed class member.
04-16-2023
==========
FIX: fillArrayEntry() moved to private.
04-08-2023
==========
FIX: Typo in README.
07-09-2023
==========
IMPROVEMENT: Rename spinlock CTor parameter.
08-03-2023
==========
IMPROVEMENT: Reworked template instantiation.
08-05-2023
==========
IMPROVEMENT: Added accumulators type to prevent possible wrap around with long sessions.
08-13-2023
==========
IMPROVEMENT: Refactoring - renamed main class.
IMPROVEMENT: Minor locality improvement.
IMPROVEMENT: Code formatting.
08-14-2023
==========
FIX: Local accumulators type.
08-15-2023
==========
IMPROVEMENT: Refactoring - avoid string CTors in decodeMemFunc().
IMPROVEMENT: Made enum explicit defined.
08-16-2023
==========
IMPROVEMENT: Made enum unsigned type.
IMPROVEMENT: Used std::time_t instead long for epoch.
08-18-2023
==========
FIX: Broken computePeakValue().
08-19-2023
==========
IMPROVEMENT: Better computeTotalLoggingTime() implementation.
08-21-2023
==========
IMPROVEMENT: Used steady_clock instead system_clock in Now().
FIX: Second workaround for *BSD compatibility (now FreeBSD only).
IMPROVEMENT: Added check libdl and set if found.
08-22-2023
==========
IMPROVEMENT: Best computeTotalLoggingTime() implementation.
08-23-2023
==========
FIX: Comment for Now().
08-24-2023
==========
IMPROVEMENT: Used arrays instead vectors in computeTotalLoggingTime().
08-25-2023
==========
FIX: min/max_element predicate logic.
08-27-2023
==========
IMPROVEMENT: Got rid unnesessary size() call.
08-28-2023
==========
FIX: Wrong comment.
08-28-2023
==========
IMPROVEMENT: Refactoring - got rid computeTotalLoggingTime() with loops.
IMPROVEMENT: Refactoring printReport().
08-31-2023
==========
IMPROVEMENT: Renamed and reworked class OnLoadInit to parametrized Timer.
09-04-2023
==========
IMPROVEMENT: Timer class made templated too.
IMPROVEMENT: Simplified condition in printReportTotal().
11-13-2023
==========
FIX: Segfault when hangup logging interactive session.
11-15-2023
==========
FIX: __cxa_guard_acquire deadlock on 5.x Linux kernels due to libC issue.
11-16-2023
==========
IMPROVEMENT: Code style.
11-30-2023
==========
IMPROVEMENT: Refactoring - less preprocessor code.
12-05-2023
==========
IMPROVEMENT: Replaced calloc() dlsym() hack to mmap() call.
FIX: mmap() calls just once.
12-16-2023
==========
IMPROVEMENT: Replaced enum to enum class.
12-24-2023
==========
FIX: Made Timer class compatible with some programs on Debian.
12-25-2023
==========
FIX: Small includes fix.
12-28-2023
==========
FIX: Possible UB.
12-31-2023
==========
IMPROVEMENT: Compiler -pthread flag set.
IMPROVEMENT: Explicit clang stdlib support.
FIX: Runtime error 'undefined symbol: _ZTINSt3__113basic_ostreamIcNS_11char_traitsIcEEEE' on Fedora/RH.
FIX: Clang compilation warning.
01-14-2024
==========
IMPROVEMENT: Correctly signalling timer thread to end.
01-28-2024
==========
IMPROVEMENT: Removed excessive casting.
01-30-2024
==========
IMPROVEMENT: Added checking dlerror in ctor.
02-11-2024
==========
IMPROVEMENT: Added header check: sys/mman.h
03-25-2024
==========
IMPROVEMENT: Move mmap() call to private member function.
03-29-2024
==========
IMPROVEMENT: The printReportTotal() function made reads the array under a row-level lock while writing to the file at runtime to ensure consistency.
04-03-2024
==========
IMPROVEMENT: Some code formatting.
04-29-2024
==========
IMPROVEMENT: Some code formatting.
06-17-2024
==========
IMPROVEMENT: Added function name in printReportTotal() not found message.
08-08-2024
==========
FIX: Code formatting.
08-09-2024
==========
IMPROVEMENT: Added free() calls logging (if supported malloc_usable_size() function).
08-10-2024
==========
IMPROVEMENT: Do not log paired free() for inner malloc() calls.
08-13-2024
==========
IMPROVEMENT: Code formatting.
IMPROVEMENT: Refactored inner malloc flag processing.
IMPROVEMENT: Made methods of InnerMallocFlag class protected.
08-15-2024
==========
FIX: Removed unnesessary in-class initialization.
08-18-2024
==========
IMPROVEMENT: Refactoring - templated flag.
08-22-2024
==========
IMPROVEMENT: Code formatting.
08-26-2024
==========
IMPROVEMENT: Added C++20 atomic_flag support.
FIX: Implicit capture of 'this' via '[=]' is deprecated in C++20.
08-28-2024
==========
IMPROVEMENT: Reduced locking level in fillArrayEntry().
08-29-2024
==========
IMPROVEMENT: It is not necessary to copy an atomic field.
08-31-2024
==========
FIX: m_running, m_exec reorder warning in Timer class.
FIX: Explicit arrays of structs initialization.
IMPROVEMENT: It is enough to capture 'this' in Timer class for C++11/C++20 compatibility.
09-10-2024
==========
IMPROVEMENT: Removed obsoleted code.
10-18-2024
==========
IMPROVEMENT: Got rid CVs and unnesessary headers.
10-19-2024
==========
IMPROVEMENT: Performance of logging function.
10-22-2024
==========
IMPROVEMENT: Reduced overhead of logging function.
FIX: PVS note V519 in logging function.
10-24-2024
==========
IMPROVEMENT: Refactoring.
10-30-2024
==========
IMPROVEMENT: CMake support added.
11-01-2024
==========
FIX: Configure error 'grep: warning: stray \ before -'.
11-02-2024
==========
FIX: Removed unnesessary option for Sun Studio.
11-03-2024
==========
FIX: Small fixes.
11-08-2024
==========
IMPROVEMENT: Added CPack support for source package.
FIX: Minor bugs with CMake LTO block.
11-11-2024
==========
IMPROVEMENT: Added CPack support for binary packages.
11-12-2024
==========
IMPROVEMENT: Added CPack system name and system processor to package name.
11-13-2024
==========
FIX: Stripping release binaries with CMake.
11-21-2024
==========
IMPROVEMENT: Added _REENTRANT define.
12-02-2024
==========
IMPROVEMENT: Added check STL to CMakeLists.txt.
12-08-2024
==========
FIX: Typo in configure.ac.
01-01-2025
==========
IMPROVEMENT: Replaced POSIX-like type names in external API.
01-04-2025
==========
IMPROVEMENT: Mark MemoryLogger class ctor as noexcept.
01-16-2025
==========
IMPROVEMENT: Singleton instantiation on load.
01-23-2025
==========
FIX: Typos.
01-23-2025
==========
IMPROVEMENT: Added runtime detection of malloc_usable_size() to log free() calls if used in conjunction with a preloaded
third-party allocator that supports malloc_usable_size().
IMPROVEMENT: Got rid unnesessary compile-time detection of malloc_usable_size().
02-27-2025
==========
FIX: Replaced _t suffixes for custom types.
03-17-2025
==========
IMPROVEMENT: Partial rollback of one simplification, potential UB fixed; FreeBSD workaround preserved.
IMPROVEMENT: Refactored a bit.
03-18-2025
==========
IMPROVEMENT: Made some auto's const.