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