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