IDA: What’s new in 6.9

Highlights

Welcome to IDA 6.9!
Below are the highlights:
  • The biggest news is the ARM64 decompiler, a long awaited tool.
    We are proud that it works well and can handle floating point and even some NEON instructions.

    Input:

    Output:

  • We reworked the way we handle the navigation in the user interface and many related things. Now it is possible to synchronize between views, use the navigation history in structure and enum views, etc. Overall the user interface is more responsive.
  • Our oldest processor module for x86 got improved to decode many new fancy instructions
  • We switched from PySide to PyQt; from Qt4 to Qt5; from VS2010 to VS2015.
    All these changes are mostly internal but using newer libraries and development tools should improve your experience with IDA.

Complete changelist

  • Processor Modules
    • 65816: many improvements
    • ARM: implemented reading of vfp registers for arm remote servers
    • ARM: implemented calculation of function argument locations for aarch64
    • ARM: improved register tracking
    • ARM: added support for security_push/pop_cookie functions (thumb mode)
    • ARM64: added support for varargs in non-framed function
    • PC: improved detection of function boundaries in PE+ files with unwinding metadata (.pdata section)
    • PC: added AVX comparison pseudo-ops
    • PC: added decoding of AVX-512 extensions
    • PC: added decoding of MPX extensions
    • PC: added decoding of SGX extensions
    • PC: added decoding of SHA extensions
    • PC: added decoding of XOP extensions
    • PC: added decoding of CLFLUSHOPT, CLWB, and PCOMMIT instructions
    • PC: added decoding of PREFETCHWT1 instruction
    • PC: added decoding of RDPKRU and WRPKRU instructions
    • PC: added decoding of XRSTORS, XSAVEC, and XSAVES instructions
    • PC: added support for switch patterns from more recent versions of clang
    • PC: added support for switch patterns from llvm-gcc
    • PC: improved prolog analysis
    • PIC18: added support for PIC18F2682/2685/4682/4685 devices
    • PPC: added support for PPC SystemV EABI and PPC64 AIX and SystemV ABIs
    • PPC: improved handling of function arguments
    • PPC: improved naming of stack variables
    • PPC: improved tracking of SP register
    • PPC: added support for memory mapping
    • MIPS64: convert standard sequences (lui, ori, li, etc) to dli macros
    • SH4: improved switch recognition (thanks to Zak Escano!)
    • SNES: improved loader, and included snes’s spc loader. Thanks, Gocha
    • SPC700: new processor module for super nintendo spc700. Thanks, Gocha
    • avr.cfg: added description of ATmega644p (thanks to Aliaksandr Chailytko)
  • File Formats
    • DWARF: Environment variable IDA_NORELOC will be honored by the plugin, and no relocations will be performed in the DWARF sections (can be useful for VxWorks-produced binaries.)
    • ELF: added AArch64 relocations
    • ELF: improved detection of truncated files
    • ELF: tweaked a bit analysis options (added AF_PURDAT)
    • MACHO: small improvement for parsing Swift metadata
    • MACHO: support for OSX apple-protected binaries (at least for versions 10.6 – 10.11)
    • PE: improved parsing of CFGuard function tables (additional flag bytes are now recognized and skipped)
    • PE: unnamed export entries are no longer given a dummy name in the Exports window
    • PE: when using manual loading, it is now possible to use the “don’t show again” checkbox to load (or skip) all subsequent sections at once
    • PE: print the PE timestamp in the file’s info comment
    • .net: we use our own file parser on all platforms, including windows too
    • uimage: add support for images that use gzip compression
  • Debugger
    • added support for ARM64 Android binaries (android_server64)
    • mac_server now supports codesigning to avoid having to run it as root. it can be codesigned just like gdb
    • GDB: allow for additional features in the XML sent by the remote stub
    • GDB: allow the user to specify additional/custom register layouts using the config file and XML target descriptions
    • GDB: added support for x64 targets
  • Kernel/Misc
    • IDS: MS Windows IDS files have been updated to Windows XP SP3
    • IDS: added Windows 7 sp1 x64 IDS files
    • IDS: update wince/arm/coredll.idt with some missing ordinals
    • TIL: support for type definitions that have long names (> 512 characters)
    • added DEMNAME_FIRST config paramter (if both type and demangled name are present, it selects one of them)
    • added STORE_USER_INFO config parameter; if turned off, info about the database creator will not be stored in the database
    • added a config option XREF_CACHE_LIMIT to limit memory usage of the cross-references cache. This allows analyzing huge files in IDA at the cost of some slowdown
    • added signatures for ICL15
    • added signatures for VC12 (VS2013) and VC14 (VS2015)
    • added signatures for Embarcadero RAD Studio xe5 to xe10 Update 1
    • improved sigmake collision detection
    • improved sigmake speed
    • added support for Linux syscall-based system calls
    • any directives of any configuration files can overridden by user-specified files placed in %IDAUSR%/cfg/
    • IDA doesn’t recognize the IDAPLG environment variable anymore: the more versatile IDAUSR should be used instead
    • IDAUSR environment variable can hold more than 1 path, which will be searched in order when looking for files
    • databases can be uploaded to Hex-Rays’ web server in background
    • demangler: added support for __vectorcall, __clrcall
    • improved analysis speed of some obfuscated files
    • pelf: Added support for AARCH64 (ARM64)
    • added more noreturning function names
  • User Interface
    • ui: added functionality to synchronize between user-specified viewers
    • ui: added syntax highlighting for IDC and Python
    • ui: added support for multiple keyboard shortcuts per action
    • ui: “search all” can now be used in “Structures”, “Enums”, and any user-created viewer
    • ui: proximity view: double-clicking on an edge will take you to the node at the other end of the edge
    • ui: proximity view: it is now possible to see details about paths, and copy their information
    • ui: traced instructions are now highlighted in debug mode
    • ui: Ctrl+DblClick on name in idaview opens target in the new view
    • ui: Add syntax highlighting to Import/Export of colors + reset it when “Reset” button is pressed
    • ui: Listing views (IDA View-A, Structures, Enumerations, …) can now be scrolled horizontally with 2-finger scrolling (e.g., on trackpads), or by using Alt+<mouse wheel> on Windows.
  • Scripts & SDK
    • IDC: added PrintLocalTypes()
    • SDK: added PR_OUTER that must be specified for processor modules that support outer operands
    • SDK: event hooks: changed the way new event listeners are registered. now new listeners are appeneded to the end of the list and therefore will receive events last. hopefully it will lead to better logic because usually it is the ui and the processor module who will get first hooked; and only then plugins. it means that the processor modules and ui will be first to react to the events
    • SDK: functions to retrieve the input file size
    • SDK: functions to calculate/retrieve the SHA256 hash of the input file
    • SDK: introduced the notion of ‘ABI name’ in IDA; it can be set using set_compiler2() function; processor modules are in general responsible for recognizing it and setting up various config bits in IDA accordingly
    • SDK: added new flag: SETMENU_FIRST: add item to the beginning of menu (to be used in attach_action_to_popup)
    • IDAPython: IDP_Hooks, IDB_Hooks, UI_Hooks & DBG_Hooks are now automatically generated from the list of notifications in the corresponding .hpp headers
    • switched from PySide to PyQt
  • BUGFIXES
    • BUGFIX: ‘user-defined offset’ dialog was broken if custom offset types were present (for tricore, for example)
    • BUGFIX: 64-bit ARM branch addresses to missing addresses would be truncated to 32 bits in the output
    • BUGFIX: 64bit mach-o loader: incorrect hangling of PRELINK_INFO
    • BUGFIX: ARM: GCC Thumb1 compressed switches that used the __gnu_thumb1_case_si helper were handled incorrectly
    • BUGFIX: ARM: incorrect calculation of locations for some big function arguments caused interr 50904 in decompiler
    • BUGFIX: ARM: incorrect disassembling of instructions FMAXV, FMAXNMV
    • BUGFIX: Automatic snapshot flag was not stored in snapshots of newly created databases
    • BUGFIX: DOS loader would accept an input file simply because it had a .exe extension
    • BUGFIX: COFF: parsing files with empty string tables was broken
    • BUGFIX: DWARF could fail with some complex ARM ADS 6.x-generated DWARF files
    • BUGFIX: DWARF relocations to ‘.debug_*’ sections were erroneously handled
    • BUGFIX: DWARF: badly-broken files with corrupt .debug_abbrev sections could cause the DWARF plugin to segfault (NULL-pointer dereference.)
    • BUGFIX: DWARF: GCC-produced DWARF type information whose name is “__int128 unsigned” wasn’t properly sanitized
    • BUGFIX: DWARF: Unexpected structuring of complex types in ADS-produced binaries could get the DWARF plugin cause an INTERR
    • BUGFIX: DWARF: some llvm7-generated construct could cause the plugin to INTERR
    • BUGFIX: During auto-analysis, don’t rename stack locations of function F, if those names would conflict with register aliases within function F
    • BUGFIX: During debugging, it was impossible to set flag registers individually
    • BUGFIX: During debugging, when the user is asked for a mapping path, and presses ‘Esc’ to set it as ignored, and ‘Esc’ again to dismiss the ‘Mappings’ dialog, the path that would be ignored was that of the file, not that of the directory containing the file
    • BUGFIX: During debugging, when the user is initially asked for a mapping, he/she couldn’t add another right after that, before dismissing the ‘mappings’ dialog
    • BUGFIX: ELF: IDA would refuse to load files with non-PT_LOAD segments lying outside of the file
    • BUGFIX: Exporting module-relative breakpoints to IDC wouldn’t properly escape ‘\’ path elements separators
    • BUGFIX: FLIRT: parsing of Watcom OMF libraries was broken
    • BUGFIX: Fixed binary search. Now this dialog can be used also for search of any input values up to uint64 size both for big/little endianness for any size of byte (8-, 16-, 24-, 32-bit)
    • BUGFIX: For 64-bit binaries, IDA could display truncated values in special segments (e.g., ‘extern’, ‘abs’, …)
    • BUGFIX: IDA could abort with interr 1226 when repairing a corrupted database
    • BUGFIX: IDA could corrupt old databases when upgrading pages containing long (size>255) keys
    • BUGFIX: IDA could crash during debugging, when asked for a binary path mapping, and if the user choses to add yet another mapping but leaves it empty
    • BUGFIX: IDA could crash on osx when trying to clear the message window while the focus is in the script snippet window
    • BUGFIX: IDA could crash when zooming out of proximity view
    • BUGFIX: IDA could erroneously report ‘database bitness differs from debugged application bitness’ when attaching to a process in batch mode
    • BUGFIX: IDA could interr when passing 0 as the bufsize parameter to tag_remove()
    • BUGFIX: IDA could not create a 32-bit flat offset inside of a 16-bit segment in some cases (by default IDA creates seg:off pairs for 16bit segments)
    • BUGFIX: IDA could not load dwarf debug info for a module when remote debugging
    • BUGFIX: IDA could show in hints wrong value of a FPU/XMM register operand
    • BUGFIX: IDA was not able to jump to a secondary IDA View, Hex View or Pseudocode window from search results, in case the last-visited view was closed
    • BUGFIX: IDA was unnecessarily retrieving the python GIL in a callback called by the kernel, resulting in a significant slowdown on mac
    • BUGFIX: IDA would fail to load PDB symbols for .pdb files selected via the file browser
    • BUGFIX: IDA would reject the names of some types from newer windows executables
    • BUGFIX: IDAPython couldn’t set the language of a breakpoint condition, and thus couldn’t express conditions in other languages than IDC
    • BUGFIX: IDAPython’s get_idasgn_desc() doesn’t return the number of matches. Added get_idasgn_desc_with_matches()
    • BUGFIX: IDAPython’s get_member_by_fullname() was not usable, and only 1 variation of get_member_by_id() was usable
    • BUGFIX: If the IDA View was in graph mode before starting a debugging session, it wouldn’t be restored to graph mode after the debugging session ends
    • BUGFIX: In 64-bit IDA, IDAPython would fail to generate proper wrappers for the objects returned by calc_switch_cases()
    • BUGFIX: In case a “Fat” Mach-O file had 2 versions of the _same_ architecture (e.g., ARMv7 & ARM64), the DWARF plugin could attempt loading the wrong one
    • BUGFIX: In the “Function calls:” window’s “callers” part, the address of the call instruction would be printed twice, instead of having the address only once and then the function name
    • BUGFIX: JumpOpXref was not working on a name with forbidden (non-identifier) characters if pressed on the name at the beginning of the disassembly listing
    • BUGFIX: LX: loader could return garbage data for packed pages
    • BUGFIX: Leaving a mark, and then right-clicking on the address of an instruction could cause IDA to INTERR with the code 520
    • BUGFIX: Loading an additional non-IDS/IDT file could cause IDA to INTERR
    • BUGFIX: PC: fixed VSIB index registers
    • BUGFIX: PC: fixed operand size for scalar FMA instructions
    • BUGFIX: PDB: Remote PDB could return garbage data on unix
    • BUGFIX: PIN, instant debugging mode: module could report incorrect process bitness after attaching
    • BUGFIX: PIN: in some cases IDA could not suspend running process
    • BUGFIX: PIN: pintool could hang on a multithreaded windows application (race condition)
    • BUGFIX: PIN: pintool did not suspend application before reporting PROCESS_ATTACH event to IDA
    • BUGFIX: PIN: pintool reported broken module name with PROCESS_ATTACH event
    • BUGFIX: PPC ddedpd, ddedpdq, denbcd, denbcdq opcodes were not properly supported
    • BUGFIX: PPC: IDA did not display the function stack frame correctly
    • BUGFIX: Pressing Home,End when in the “quick filter” of a chooser will move the cursor to the beginning or to the end of the filter line, instead of scrolling the list of items to the beginning or the end
    • BUGFIX: RVCT-produced DWARF info with duplicate typedefs could cause the DWARF plugins some issues
    • BUGFIX: Selecting an area, pressing ‘t’ to choose between matching structs (or almost-matching structs), and requesting to “Add missing fields” to a struct that would otherwise match, could crash IDA
    • BUGFIX: Setting NLSPATH to a very large value could cause IDA to crash at startup
    • BUGFIX: Setting a module-relative breakpoint, without specifying the module name, could crash IDA at database-save time
    • BUGFIX: Shift+Up/Down/PageUp/PageDown when modifying the quick filter of a chooser wouldn’t add rows to the selection but rather clear the selection, and select only 1 item
    • BUGFIX: Some ARM ELF relocations (R_ARM_CALL, R_ARM_JUMP24, …) could be incorrect
    • BUGFIX: Some PPC opcodes were causing IDA to exit with interr 10185
    • BUGFIX: The DWARF plugin could fail loading GCC 3.3.3-produced UDTs with declared-only inherited types
    • BUGFIX: The DWARF plugin could fail spotting colliding typedefs in clang-produced DWARF information
    • BUGFIX: When exporting types, IDA could crash after trying to forward declare a non-local type
    • BUGFIX: When failing to updating a breakpoint’s size/type through update_bpt(), IDA could leave the breakpoint in a state preventing it from being usable anymore
    • BUGFIX: When making code, if segments had to be adjusted, IDA could crash because of recursive calls to generate_disassembly()
    • BUGFIX: When selecting negative “standard constant” enumerators, IDA could display the operand as a faulty number, instead of as that symbolic constant
    • BUGFIX: When the start address of function with chunks was changed, the “owner” and “referers” field of function tails were not updated and could hold the address of non-function area. In this case any modification of function using screanEA from tails range fails. The problem is solved by fixing “owner” and “referers” of tails using new start ea of the function
    • BUGFIX: Win32 debugging: could leave EIP in the middle of an instruction, in some cases a step over/into an x86/x86_64 callgate was requested (i.e., system call), and if that callgate called us back, hitting a breakpoint in user code
    • BUGFIX: __declspec(align(x)) was parsed incorrectly in some cases
    • BUGFIX: alignment for complex situations like “void (***func[])() was not parsed/printed correctly
    • BUGFIX: aloc_visitor_t could not be fully utilized from idapython
    • BUGFIX: area_visitor2_t could not be fully utilized from idapython
    • BUGFIX: c166: Fixed ida crash if bad cc code for jmpr, jmpa, calla, jmpi, calli instructions is stored in the database
    • BUGFIX: calling QTime::elapsed() from idleEvent() would significantly slow down analysis time on mac
    • BUGFIX: checking for the new versions the second time could fail
    • BUGFIX: coldfire: ida was decoding illegal addressing modes for the move instruction
    • BUGFIX: copying from customer views to clipboard was broken
    • BUGFIX: dbg: dalvik: the unregistered request for deferred breakpoint prevented the debugger detach
    • BUGFIX: dbg: fixed wrong 64-bit address truncation to 32-bit
    • BUGFIX: dbg: win32: dirty memory block was returned in memory info
    • BUGFIX: debugger: fixed interr 1203 which could happen in presence of DLLs with very long (>1024 bytes) export names
    • BUGFIX: defining a new structure oe enum in the presence of a forward declaration would change the ordinal number of the forward declaration
    • BUGFIX: ebc: fixed some wrong references and exceptions
    • BUGFIX: error color was printed as blue when generating html files
    • BUGFIX: exception code was displayed incorrectly in the ‘edit exception’ dialog
    • BUGFIX: fixed handling of empty structs: ida was considering them to be 1-byte size while gcc treats them as 0-byte size
    • BUGFIX: fixed interr 1060 which could occur if the target compiler was not set
    • BUGFIX: fixed interr 40178
    • BUGFIX: fixed interr 50295
    • BUGFIX: fixed interr 984 which could occur during importing pdb files
    • BUGFIX: fixed memory corruption (seemingly without any consequences) made by askstr()
    • BUGFIX: floating point operands of data items would be printed incorrectly for big endian processors
    • BUGFIX: gdb: 64-bit debuggers were using 32-bit register layouts
    • BUGFIX: hcs12x: Fixed instruction opcodes for xgate instruction set (sub and sbc instructions and their aliases were swapped)
    • BUGFIX: highlighting and scrolling could be sluggish in the disassembly views, especially on osx
    • BUGFIX: ida could crash if the user closed the database and terminated the debugger session at once (only in some rare circumstances)
    • BUGFIX: ida could crash on some corrupted 64-bit PE files
    • BUGFIX: ida could crash when deleting a segment
    • BUGFIX: ida could fail with “rpc timeout” if the debugger server was trying to print while ida was waiting for debug events
    • BUGFIX: ida could hang trying to display nested varsize structs in the middle of a struct (where they do not make sense)
    • BUGFIX: ida could interr with code 1006 when deleting local types
    • BUGFIX: ida could not parse some nested types (like type1::type2 inside a struct)
    • BUGFIX: ida was not using the default calling convention for validating function types; if it was set to something wrong, interrs could occur in the decompiler
    • BUGFIX: ida would fail to launch debugger after copying the dll to debug to the remote computer (only if debugging dll, not exe)
    • BUGFIX: idal/idaw couldn’t generating valid GDL graphs when run in batch mode
    • BUGFIX: idapython: ui/qt: docking: ida could crash if the dock wich is active is moved using set_dock_pos
    • BUGFIX: idaw could sometimes reset the window size to 80×24 even if not asked to do so
    • BUGFIX: idc: ParseTypes could not parse a enum if some of its members were already used in other types
    • BUGFIX: idc: sizeof() function was broken
    • BUGFIX: in linux text version of IDA, it was impossible to cancel a long-running operation
    • BUGFIX: in some cases IDA could abort with mesage “page allocation error”
    • BUGFIX: in the ‘Structures’ view, removing fields from aggregated structure (leading to gaps appearing in aggregating structure), and then re-defining those fields wouldn’t reclaim those bytes
    • BUGFIX: interr 50913 could occur if a previously valid type was rendered invalid
    • BUGFIX: interr 543 was occurring at the exit time
    • BUGFIX: interr 814 could occur when deleting local types
    • BUGFIX: interr 973 could be displayed by mistake in some rare cases
    • BUGFIX: it was impossible to create a usable instance of enum_member_visitor_t from idapython
    • BUGFIX: it was impossible using ui to add sp change point to express changes between function chunks
    • BUGFIX: ldr: elf: preserved patch_mode noform bits during “Local options” dialog; option “Create base for debugging” setting cannot be changed, fixed
    • BUGFIX: ldr: elf_x64: callback x64_patch() used patch_mode from the wrong place
    • BUGFIX: linux_server: fallback to accept() if accept4() is not implemented
    • BUGFIX: mc68k module was not generating xrefs to struct members
    • BUGFIX: mc68k: address bus width for mc68000, mc68010, cpu32 reduced to 24 bits
    • BUGFIX: name color for references into the middle of a struct/array was wrong
    • BUGFIX: offset expressions for wide-byte processors were truncated
    • BUGFIX: osx: once idaq was launched, double clicking on idaq64 would not launch idaq64 but simply switch to idaq
    • BUGFIX: pc: when deleting segments basereg info was still retained
    • BUGFIX: replacing a enum with another enum that had fewer member could lead to interr 1263
    • BUGFIX: sdk: tinfo_t::get_final_type_name() would return wrong names for typedefs to forward declarations
    • BUGFIX: searching for binary patterns would fail in some cases for processors with non-standard byte size
    • BUGFIX: sh3: “bad optype” message could be displayed if the user changed an operand type when staying after comma inside an operand like this: (h’XX, rY)
    • BUGFIX: sh3: ida would not detect that after indirect calls to non-returning functions the execution flow stops
    • BUGFIX: sigmake could interr with code 577
    • BUGFIX: sigmake would output corrupt data with pattern lengths greater than 255
    • BUGFIX: some data cross references would not be deleted when deleting the corresponding data item
    • BUGFIX: srec output was broken (markers in format strings were not replaced properly.)
    • BUGFIX: stack analysis could cause an internal error in some very rare cases
    • BUGFIX: struct_field_visitor_t and related functions could not be fully utilized from idapython
    • BUGFIX: the string window was missing some strings when the debugger was active
    • BUGFIX: tinfo_visitor_t could crash on yet unresolved tinfo objects
    • BUGFIX: tinfo_visitor_t could not be fully utilized from idapython
    • BUGFIX: tricore would print empty @HIS() if the target address of the HIGHA16 offset was wrong (it should print the operand as a number in this case)
    • BUGFIX: ui/qt: display_tform() could still place the widget back into the main window, in case that widget had a title with ‘,’ in it (amends 59726, really.)
    • BUGFIX: ui: Fixed broken layout of “Enter reference information” dialog if custom reference info is used
    • BUGFIX: ui: forms: “Change segment attributes” dialog set wrong attribute alignments
    • BUGFIX: ui: local variable type cast in “Watch View” was broken, added test cases
    • BUGFIX: ui: qt: Fixed the behavior of display_tform ( or ui_show_form or form.Show() in python). If the form already exists then its position is not changed
    • BUGFIX: ui: qt: Removed displaying of empty popup menus for IdaCustomMemos
    • BUGFIX: ui: qt: set AutoFillBackground property to true for TMyDialog. Overwise in some cases background is not painted
    • BUGFIX: user graph nodes could be rendered too small on osx
    • BUGFIX: v850: Fixed decoding of ld.hu instruction
    • BUGFIX: watches could not be deleted from the watch list via the Debugger menu
    • BUGFIX: windbg debugger could fail with interr 520
    • BUGFIX: windbg, kernel mode: in some cases ida failed to resume execution after a breakpoint
    • BUGFIX: windbg: in some cases DETACH request could return incorrect code (FAIL instead of SUCCESS)
    • BUGFIX: windmp: dump loader would incorrrectly try to continue if the debugging engine initialization failed, leading to a crash
    • BUGFIX: PE: some sections with valid data were skipped by default because the discardable flag was set
    • BUGFIX: PE: intentionally corrupted .NET PE files could corrupt heap or could trigger a static buffer overwrite
    • BUGFIX: PE: it was not possible to manually load a section which is skipped by default
    • BUGFIX: ntapi.til: definition of ULONGLONG was wrong (it was defined as “double”)
    • BUGFIX: sdk: function addresss iterator might return a wrong address for some special cases;
    • BUGFIX: the ‘xrefs to’ view would duplicate the list for every refresh
    • BUGFIX: ui: Fixed graph printing. Added the menu item “print graph” to the popup menu
    • BUGFIX: ui: IDA would crash when clicking “Compile” in breakpoint’s condition editor and the condition was empty.
  • BUGFIXES in the SERVICE PACK
    • BUGFIX: After performing a search with “Find all occurrences” checked, jumping by double-clicking on a result in the list wouldn’t reset the cursor’s Y position to the 5th line from the top of the screen
    • BUGFIX: Badly-damaged unpacked databases could cause IDA to crash at startup (while repairing.)
    • BUGFIX: CLI: stack buffer overrun could happen when disassembling .net files with very long method prototypes
    • BUGFIX: Color options dialog could be too tall for the screen, making it impossible to click ‘Ok’
    • BUGFIX: DWARF plugin could be very slow to process DWARF debug information with huge type graphs
    • BUGFIX: Deleting a structure could cause the view to jump to an unexpected position
    • BUGFIX: Don’t activate/raise IDA View-? when selecting a thread
    • BUGFIX: Double-clicking an edge in the graph view, would correctly move to the target node, but wouldn’t create a new location history entry
    • BUGFIX: Double-clicking on a ‘Caller’ or ‘Callee’ in the “Function calls” window could crash IDA
    • BUGFIX: EA-capable views would store their bookmarks in a per-view-type-specialized storage space, which wouldn’t allow sharing them between “IDA View-?”, “Hex View-?” & “Pseudocode-?” views
    • BUGFIX: ELF ‘extern’ segment could be misaligned for 64-bit files
    • BUGFIX: GDB: software breakpoint bytes were swapped for big-endiand and little-endian MIPS, leading to bogus exceptions during debuggging
    • BUGFIX: IDA could crash at exit-time if some events happened in a very short amount of time
    • BUGFIX: IDA could crash when moved from screen to screen, if a widget had an empty area (https://bugreports.qt.io/browse/QTBUG-43489)
    • BUGFIX: IDA could fail loading configuration from files included by “#softinclude” (e.g., ‘idausert.cfg’)
    • BUGFIX: IDA on OS X could lose the ability to click to move the cursor in the listing after performing some navigation
    • BUGFIX: IDA would always load symbols when loading a PDB file, even if the ‘Types only’ option was specified
    • BUGFIX: IDA would freeze after opening a file via drag-and-drop while a file dialog was open
    • BUGFIX: IDA would often implicitly create a QString from a char *, leading to a number of encoding issues
    • BUGFIX: IDAPython on Linux would not honor $PYTHONHOME when using the system’s python
    • BUGFIX: IDAPython’s IDC emulation of idc.GetTevRegMem() was not working
    • BUGFIX: IDAPython’s choose.choose() was broken
    • BUGFIX: IDAPython/IDC: del_hotkey() failed to unregister the corresponding action
    • BUGFIX: IDAPython: execute_ui_requests() could crash IDA
    • BUGFIX: IDAPython: on linux, some form-related controls could fail to show, because of pointer conversion issues
    • BUGFIX: IDAPython: retrieve_exceptions()/store_exceptions() was not usable because of unknown vector type
    • BUGFIX: It was impossible to override a core action’s shortcut(s) to “no shortcuts”
    • BUGFIX: It was impossible to place breakpoints in source-level debugging with actual source files (i.e., not pseudocode provided by Hex-Rays)
    • BUGFIX: Jumping to ‘linked node’ (by pressing Ctrl+Up/Down) in the graph view, would correctly move to the target node, but wouldn’t create a new location history entry
    • BUGFIX: Jumping to end of “Structures” view could fail to display the members of the last structure (if it is expanded.)
    • BUGFIX: Menus & toolbars were created after the PLUGIN_FIX plugins were initialized, and thus it was impossible to, e.g., attach_action_to_menu() from idapythonrc.py
    • BUGFIX: Moving left/right on a line where a search result was found, could lead IDA to fail subsequent “search again” operations (i.e., Ctrl+T)
    • BUGFIX: Navigating back & forth in a view that has a corrupt history could cause INTERR 40464 or 40465
    • BUGFIX: Opening an IDA 6.8 IDB with empty bookmarks in IDA 6.9, could cause INTERR 1312
    • BUGFIX: PE: intentionally corrupted .NET files could trigger invalid memory reads
    • BUGFIX: Pressing <Enter> in the “Select file to disassemble” could, in some cases, crash IDA
    • BUGFIX: Pressing Alt+L wouldn’t provide visual feedback as it did before
    • BUGFIX: Separators in menus could, on some platforms, be prepended by ‘(…)’
    • BUGFIX: THREAD_EXIT event during appcall would cause problems
    • BUGFIX: The title of the Xrefs dialog that shows when pressing ‘x’, could be erroneous
    • BUGFIX: When loading an IDB and/or starting/stopping a debugging session, the main window could be maximized, but the widgets would remain in the top-left corner
    • BUGFIX: When pressing ‘Down’ in the “Structures” window, it might happen that the last line of a non-collapsed union would repeat multiple times
    • BUGFIX: calling idaapi.del_hotkey() twice with the same argument could crash IDA
    • BUGFIX: dwarf: be more resilient when saving a type to the TIL fails because of duplicate names
    • BUGFIX: fixed interr 40208 that could occur when closing the database after a fatal debugger error (disconnection from the remote host, for example)
    • BUGFIX: forms could not display filenames containing chinese characters
    • BUGFIX: non-ascii characters in the input file name would not be displayed correctly
    • BUGFIX: setting memory based variable values from the watch and locals view was broken
    • BUGFIX: spc700 processor data references could be missing
    • BUGFIX: structs with embedded arrays could be erroneously displayed in terse form even when it was not possible
    • BUGFIX: text IDA: pressing Ctrl+F4 to toggle to hex dump wouldn’t refresh the screen right away
    • BUGFIX: text version of IDA could display the cursor in the wrong place if there was horizontal scrolling on the view
    • BUGFIX: text version of IDA could fail to draw the cursor after pressing ‘End’ to get to the end of a line of disassembly
    • BUGFIX: text version of IDA could fail to update the horizontal scrollbar upon cursor moves
    • BUGFIX: the wrong font might be selected when re-opening the font selection dialog
    • BUGFIX: win32 debugging: a hardware breakpoint located at an instruction right after another instruction that also has a breakpoint, could fail being triggered
    • BUGFIX: windbg could fail to load dbgeng.dll under Windows 7
    • BUGFIX: decompiler: arm64: in some cases condition flags could be calculated incorrectly
    • BUGFIX: decompiler: arm64: v8 was erroneously used to pass function arguments
    • BUGFIX: decompiler: arm: some conditional instructions could be translated without conditions
    • BUGFIX: decompiler: moving the mouse around could interfere with the “current location”, and some actions could act in the wrong place (e.g., placing comments.)
    • BUGFIX: decompiler: stack arguments could not be recognized…, improved calculation of stack bytes used in a function call..
    • BUGFIX: decompiler: fixed numerous interrs (most of them very rarely occurring)