Fixups uses the NT profiling facility to monitor and isolate unaligned memory accesses. Each time an unaligned access occurs the tool is able to narrow it's focus on the location of the fault. Because this is a statistical detection method, it takes a few seconds to isolate repeated faults at the same location and sporadic faults cannot be completely isolated.



Hints for using Fixups



Double click on a line in the main display to see more detail about that process.

Items are black when they have no alignment fixups.

Items are blue when they have at least 1 alignment fixup.

A detail item is red when the alignment fixup location has been narrowed to a single instruction.

A detail item is gray if there have not been any alignment fixups in it's range for 30 seconds. This indicates the item's profiler is turned off to minimize the system resources used. All items are turned back on if Fixups misses any alignment fixup counts. The total process item on the main display is never turned off and provides the number of fixups that should show up in the active detail profiles.

The total for a detail view may not match the total for that process in the main window because 1) detail profiles aren't setup until alignment faults start occurring and 2) some counts are lost as profiles are split to isolate alignment faults.

If a proces exits while being monitored Fixups will keep the data about it (show in white) if any alignment fixups were detected. With this feature you can leave Fixups running in minimized form and review the collected data later.

Processes are sorted by creation time. Processes that have exited with at least one alignment fault are at the end.



Requirments



Fixups.exe requires Windows NT 4.0 or later

If a process gets created and exits immediately fixups.exe may detect the creation but fail when it attempts to open a handle for the process. You will see a NtOpenProcess exception. Ignore this as it will be fixed in a future version.

Some users have reported an error with the text "NtCreateProfile failed (80000005)" when monitoring large applications. There is no workaround at the present time



