2009-06-12 Bill Holmes <billholmes54@gmail.com>
[mono.git] / mono / profiler / ChangeLog
1 2009-05-25  Massimiliano Mantione <massi@ximian.com>
2         * mono-profiler-logging.c (setup_user_options): Avoid tracking stacks
3         and emitting allocation caller information if we are already emitting
4         method enter and exit events.
5
6 2009-04-06  Massimiliano Mantione <massi@ximian.com>
7         * mono-profiler-logging.c: Added monitor contention profiling.
8         - Changed RESERVE_EVENTS to require a call to the new 
9         COMMIT_RESERVED_EVENTS macro after we have filled the event slots
10         (this allows to acquire all the event slots atomically).
11         - Created utility function "save_stack_delta".
12         - Created "monitor_event" callback.
13         - renamed "handle_heap_profiling" as "process_gc_event" because it
14         must be used also to help avoid interferences between garbage
15         collections and monitor profiling.
16
17 2009-03-23  Massimiliano Mantione <massi@ximian.com>
18         * mono-profiler-logging.c: Removed useless "gc-signal" option (the
19         newer "heap=<SIGNAL>" format of the "heap" option does the same thing).
20
21 2009-03-16  Massimiliano Mantione <massi@ximian.com>
22         * mono-profiler-logging.c: When checking if an elf file is valid,
23         avoid mapping it in memory until we know it's usable (avoids virtual
24         memory fragmentation issues).
25
26 2009-01-25  Massimiliano Mantione <massi@ximian.com>
27         * mono-profiler-logging.c: Bug fixing.
28         The issue is that while reading /proc/self/maps is can happen that
29         the last regions (typically [vsyscall] and [vsdo]) are reported more
30         than once (or anyway are read more than once, even when usng the plain
31         "read" call with no buffering), and I found no workaround for this.
32         So the code must be careful and throw away the duplicates.
33         - restore_old_regions: work starting from the new regions instead of
34         the old ones.
35         - sort_regions: introduce a "throw away the duplicates" pass.
36         - fix_region_references: added a pass to make sure that the elf files
37         always reference the new regions and not the old ones.
38         - refresh_memory_regions: call "sort_regions" before
39         "restore_old_regions" so we know we have no duplicates.
40
41 2009-01-18  Massimiliano Mantione <massi@ximian.com>
42         * mono-profiler-logging.c: Bug fixing.
43         - profiler_executable_memory_region_destroy: fixed a cut&paste mistake
44         causing a double free.
45         - executable_file_open: allow the code to look at all files, and fix
46         building of "files->new_files" list.
47         - executable_file_free: set "file->section_regions" to NULL when
48         freeing it (for safety).
49
50 2008-12-31  Massimiliano Mantione <massi@ximian.com>
51         * mono-profiler-logging.c: added "save-allocation-caller" option.
52
53 2008-12-30  Massimiliano Mantione <massi@ximian.com>
54         * mono-profiler-logging.c:
55         - profiler_executable_memory_region_destroy: fixed memory region
56         unloading.
57         - executable_file_add_region_reference: likewise.
58         - executable_file_close: likewise.
59         - executable_file_open: fixed file name handling.
60         - parse_map_line: likewise.
61         - scan_process_regions: likewise.
62         - statistical_call_chain: exit loop if the writer thread is busy.
63
64 2008-12-11  Massimiliano Mantione <massi@ximian.com>
65         * mono-profiler-logging.c:
66         - executable_file_open: Proper remember of already opened files.
67         - ProfilerStatisticalData: use unsigned values so the index never
68         trips over and becomes negative.
69         - statistical_call_chain, statistical_hit: likewise.
70
71 2008-12-11  Massimiliano Mantione <massi@ximian.com>
72         * mono-profiler-logging.c: Added defaults to command line options.
73
74 2008-12-01  Massimiliano Mantione <massi@ximian.com>
75         * mono-profiler-logging.c:
76         - ProfilerThreadStack: added "last_written_frame" and "written_frames"
77         fields to keep track of the call stacks actually written, so that we
78         can "replay" the full call stack at the beginning of each event block
79         (which allows the decoder to read blocks in random order and still see
80         all the call stacks correctly).
81         - gc_event: Fixed event creation sequence.
82         - Improved event logging (debugging) code.
83
84 2008-11-04  Massimiliano Mantione <massi@ximian.com>
85         * mono-profiler-logging.c:
86         Make sure that stack sections can be fully reconstructed even reading
87         only one block.
88
89 2008-10-10  Massimiliano Mantione <massi@ximian.com>
90         * mono-profiler-logging.c:
91         Added "aci" option to emit the object "id" at each allocation. 
92
93 2008-10-10  Massimiliano Mantione <massi@ximian.com>
94         * mono-profiler-logging.c:
95         Added support for handling the stack trace of each allocation event.
96         - MonoProfilerDirectives: added directive to state that allocations
97         have stack traces (not strictly needed, but simplifirs the decoder).
98         - ProfilerEventData: gave one more bit to code (and one less to value).
99         - MonoProfilerEvents: Added "stack section" event to record stack state.
100         - ProfilerThreadStack: added last_saved_top to track what we just saved.
101         - _MonoProfiler::action_flags: Added save_allocation_caller and
102         save_allocation_stack to state what we do for allocations.
103         - All "thread_stack_..." functions: Track last_saved_top.
104         - Added thread_stack_count_unsaved_frames utilty function.
105         - write_directives_block: handle ALLOCATIONS_HAVE_STACK directive.
106         - Added write_stack_section_event function.
107         - write_event: also handle emission of stack sections.
108         - Reworked all the "STORE_EVENT_..." macros to work on arbitrary event
109         slots (needed for stack sections), and as a consequence fixed all the
110         functions that use them.
111         - object_allocated: save "delta" stack section if needed.
112         - setup_user_options: handle new "sas" option.
113
114 2008-09-08  Massimiliano Mantione <massi@ximian.com>
115         * Makefile.am: Don't build the profilers if DISABLE_PROFILER is set.
116
117 2008-09-08  Massimiliano Mantione <massi@ximian.com>
118         * mono-profiler-logging.c:
119         - setup_user_options: made so that the user has to explicitly request
120         the "f" mode when the "h" is asked, otherwise the number of snapshot
121         blocks in the file is very confusing.
122         - Added three icalls to control the profiler from the profiled
123         application.
124
125 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
126
127         * mono-profiler-logging.c (detect_fast_timer): Add missing return type.
128
129 2008-08-21  Massimiliano Mantione <massi@ximian.com>
130         * mono-profiler-logging.c: Added support for correct accounting of
131         allocations which happened at JIT time.
132
133 2008-08-20  Massimiliano Mantione <massi@ximian.com>
134         * mono-profiler-logging.c: Added directives block, and used it to
135         state that "allocation attribution" done using the stack tracking (so
136         that allocation callers are directly written in the log file).
137
138 2008-07-28  Massimiliano Mantione <massi@ximian.com>
139         * mono-profiler-logging.c: Added stack tracking (even if still unused).
140
141 2008-07-28  Massimiliano Mantione <massi@ximian.com>
142         * mono-profiler-logging.c: Fix bug 412473:
143         - write_statistical_data_block: check if the current MonoThread still
144         exists, and if not avoid calling mono_jit_info_table_find.
145         - profiler_shutdown: flush everything in the current thread.
146
147 2008-07-28  Massimiliano Mantione <massi@ximian.com>
148         * mono-profiler-logging.c: Fix the "allocation summaries" feature
149         (I committed it but it never really worked until now).
150
151 2008-07-04  Massimiliano Mantione <massi@ximian.com>
152         * mono-profiler-logging.c: Emit full type names for loaded classes
153         (patch by Rodrigo Kumpera).
154
155 2008-07-04  Massimiliano Mantione <massi@ximian.com>
156         * mono-profiler-logging.c: Use the new "runtime initialized" hook.
157
158 2008-07-04  Massimiliano Mantione <massi@ximian.com>
159         * mono-profiler-logging.c: Fix an embarassingly stupid problem with
160         buffer sizes.
161
162 2008-07-03  Massimiliano Mantione <massi@ximian.com>
163         * mono-profiler-logging.c: Changed the way to wait for the writer
164         thread to avoid passing an invalid handle to pthread_join.
165
166 2008-06-28  Massimiliano Mantione <massi@ximian.com>
167         * mono-profiler-logging.c: When offloading flushing to the writer
168         thread, first check that it still exists.
169
170 2008-06-25  Massimiliano Mantione <massi@ximian.com>
171         * mono-profiler-logging.c: Offload more flushing to the writer thread,
172         and fix the shutdown sequence.
173
174 2008-06-25  Massimiliano Mantione <massi@ximian.com>
175         * mono-profiler-logging.c: Made so that at appdomain unload the
176         buffers are flushed by the profiler worker thread (which we know
177         is registered with the runtime).
178
179 2008-06-25  Massimiliano Mantione <massi@ximian.com>
180         * mono-profiler-logging.c: Added more logging code.
181
182 2008-06-25  Massimiliano Mantione <massi@ximian.com>
183         * mono-profiler-logging.c: Record also the domain of each statistical
184         hit, so that mono_jit_info_table_find works properly.
185
186 2008-06-25  Massimiliano Mantione <massi@ximian.com>
187         * mono-profiler-logging.c: Fixed breakage introduced in r105966
188
189 2008-06-17  Massimiliano Mantione <massi@ximian.com>
190         * mono-profiler-logging.c: Implemented signal based enable-disable
191         toggling for the statistical and enter-exit events.
192
193 2008-06-17  Massimiliano Mantione <massi@ximian.com>
194         * mono-profiler-logging.c (write_statistical_hit): Use the proper
195         domain instead of trying to get one.
196
197 2008-06-16  Massimiliano Mantione <massi@ximian.com>
198         * mono-profiler-logging.c (module_end_load, assembly_end_load):
199         Properly check the return value of "mono_assembly_fill_assembly_name",
200         otherwise "mono_stringify_assembly_name" can crash.
201
202 2008-06-16  Massimiliano Mantione <massi@ximian.com>
203         * mono-profiler-logging.c: Fix a segfault on shutdown (see Marek's
204         fix for the default profiler in r105466, the problem is the same.
205
206 2008-06-16  Massimiliano Mantione <massi@ximian.com>
207         * mono-profiler-logging.c: Initial implementation of summary report
208         for allocations at each collection.
209
210 2008-05-23  Massimiliano Mantione <massi@ximian.com>
211         * mono-profiler-logging.c: Fix warnings x86 and remove debugging code.
212
213 2008-05-23  Massimiliano Mantione <massi@ximian.com>
214         * mono-profiler-logging.c: Fix the build on x86.
215
216 2008-05-23  Massimiliano Mantione <massi@ximian.com>
217         * mono-profiler-logging.c: Support call chains (backtrace) in the
218         stat profiler.
219
220 2008-05-12  Massimiliano Mantione <massi@ximian.com>
221         * mono-profiler-logging.c (handle_heap_profiling): Flush all data
222         buffers, so that objext allocation events are written before the heap
223         description (which contains the "object free" events).
224
225 2008-05-12  Massimiliano Mantione <massi@ximian.com>
226         * mono-profiler-logging.c: Added support for a global counter of all
227         garbage collections, so that the file decoder can correlate the
228         events properly.
229
230 2008-05-12  Massimiliano Mantione <massi@ximian.com>
231         * mono-profiler-logging.c: Fixed a bug that prevented using rdtsc,
232         and enabled rdtsc by default,adding a command line option to revert
233         to using gettimeofday.
234
235 2008-05-02  Massimiliano Mantione <massi@ximian.com>
236          * mono-profiler-logging.c: Turned DEBUG_STATISTICAL_PROFILER off...
237
238 2008-05-02  Massimiliano Mantione <massi@ximian.com>
239          * mono-profiler-logging.c : Rework statistical profiler, adding the
240          ability to scan symbol tables in elf files instead of using dladdr
241          (dladdr skips lots of symbols which this way we get correctly).
242
243 2008-04-16  Massimiliano Mantione <massi@ximian.com>
244          * mono-profiler-logging.c (gc_event): Fix deadlock condition.
245
246 2008-04-16  Massimiliano Mantione <massi@ximian.com>
247          * mono-profiler-logging.c (write_current_block): Added an incremental
248          "counter delta" field to the block header, so that each block has a
249          timestamp directly in the header.
250          This will allow tools to know when a block has been emitted without
251          decoding (even without reading) the block contents.
252          So, if the user is only interested in blocks emitted in a certain
253          time interval, the tool can seek into the file instead of reading the
254          block contents.
255          Of course this breaks the file format, but at this stage we can still
256          do it, and... better now than later.
257
258 2008-04-10  Massimiliano Mantione <massi@ximian.com>
259         * mono-profiler-logging.c (profiler_heap_scan): removed debugging code
260         and therefore removed unconditional inclusion of signal.h (it is now
261         included anyway on Unix platforms).
262
263 2008-04-10  Massimiliano Mantione <massi@ximian.com>
264         * mono-profiler-logging.c: Added possibiliy of requesting heap
265         snapshots with a signal (like heap-shot).
266
267 2008-04-02  Rodrigo Kumpera <rkumpera@novell.com>
268
269         * mono-profiler-logging.c: Fix the arm build. G_BREAKPOINT() does
270         a "raise(SIGTRAL)" and in some platforms <signal.h> must be included.
271
272 2008-03-28  Massimiliano Mantione <massi@ximian.com>
273         * mono-profiler-logging.c: Added option to append a suffix to the
274         default file name.
275
276 2008-03-27  Massimiliano Mantione <massi@ximian.com>
277         * mono-profiler-logging.c: setup_user_options: set default log file
278         name to the name of the executed application.
279
280 2008-03-26  Massimiliano Mantione <massi@ximian.com>
281         * Makefile.am: enabled the logging profiler on Linux.
282
283 2008-03-26  Massimiliano Mantione <massi@ximian.com>
284         * mono-profiler-logging.c: Attach and detach the writer thread.
285
286 2008-03-25  Massimiliano Mantione <massi@ximian.com>
287         * mono-profiler-logging.c: Fixed bug with memory region indexes.
288
289 2008-03-18  Massimiliano Mantione <massi@ximian.com>
290         * mono-profiler-logging.c:
291         OPEN_FILE(): Fixed file creation.
292         [UN]LOCK_PROFILER(): Removed logging message.
293
294 2008-03-11  Massimiliano Mantione <massi@ximian.com>
295         * mono-profiler-logging.c: Fixed heap profiler, added a new way to
296         get the symbol names for unmanaged functions, and fixed lots of bugs.
297
298 2008-01-08  Massimiliano Mantione <massi@ximian.com>
299         * mono-profiler-logging.c: First code drop of new logging profiler
300         (and shamefully forgot to set HAS_OPROFILE to 0...).
301         * Makefile.am: Added logging profiler, but commented in out to avoid
302         breaking the build on Windows.
303
304 2005-07-25  Zoltan Varga  <vargaz@freemail.hu>
305
306         * mono-cov.c: Applied patch from Iain McCoy (iain@mccoy.id.au). Fixes
307         #75619.
308
309 2003-11-12  Jackson Harper  <jackson@ximian.com>
310
311         * mono-cov.c: Change default assembly name to mscorlib.dll
312         
313 Tue Jul 1 11:26:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
314
315         * Makefile.am: added.
316
317 Mon Jun 16 18:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
318
319         * mono-cov.c: coverage profiler.
320