Bug #75508 Workbench crashes when zooming out of a visual explain plan overview thumbnail
Submitted: 14 Jan 2015 18:32 Modified: 27 May 2015 1:29
Reporter: Paul Keenan Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Workbench: SQL Editor Severity:S3 (Non-critical)
Version:6.2.4.12437 build 2426 (64 bits) OS:Windows (Win 7 64-bit)
Assigned to: CPU Architecture:Any
Tags: crash, Visual Explain, workbench

[14 Jan 2015 18:32] Paul Keenan
Description:
When the visual explain plan for a non-trivial query is viewed in workbench such that it cannot fit in the window all at the same time, you can click the overview button, which lets you drag around a thumbnail of the explain plan to quickly go to the section of the plan you are interested in.

When I try to zoom back out by double-clicking inside the thumbnail, MySQL Workbench crashes.  This happens every time.

I get the following exception produced :

System.AccessViolationException was unhandled
  Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
  Source=mforms.wr
  StackTrace:
       at MySQL.Forms.ViewEventTarget.HandleMouseDown(Object sender, MouseEventArgs e)
       at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at MySQL.GUI.Workbench.Program.Main(String[] Args)
  InnerException: 

How to repeat:
Open MySQL Workbench and connect to a database.

Load or write a sufficiently complex query such that it's explain plan will not fit inside the results window.

Press Ctrl-Alt-X to explain the current query.

- query plan too big for the results window should appear with scrollbars

Click on the "eye" icon to the right of the word "Overview"

- query plan should shrink to thumbnail size

Left-click mouse inside the thumbnail

- MySQL Workbench application crashes
[15 Jan 2015 5:48] MySQL Verification Team
Hello Paul Keenan,

Thank you for the report and repeatable steps.

Thanks,
Umesh
[15 Jan 2015 5:49] MySQL Verification Team
// Win7 - Workbench 6.2.4
// Start Wb in full debug mode

D:\Workbench\MySQL Workbench 6.2.4 (winx64)>MySQLWorkbench.exe -log-level=debug3

D:\Workbench\MySQL Workbench 6.2.4 (winx64)>Logger set to level 'debug3'. '0111111'

Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indi
cation that other memory is corrupt.
   at MySQL.Forms.ViewEventTarget.HandleMouseDown(Object sender, MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FP
ushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at MySQL.GUI.Workbench.Program.Main(String[] Args)

// Install Sakila schema  - http://dev.mysql.com/doc/sakila/en/sakila-installation.html
// Execute below statement

use sakila;
SELECT CONCAT(customer.last_name, ', ', customer.first_name) AS customer,
 address.phone, film.title
 FROM rental INNER JOIN customer ON rental.customer_id = customer.customer_id
 INNER JOIN address ON customer.address_id = address.address_id
 INNER JOIN inventory ON rental.inventory_id = inventory.inventory_id
 INNER JOIN film ON inventory.film_id = film.film_id
 WHERE rental.return_date IS NULL
 AND rental_date + INTERVAL film.rental_duration DAY < CURRENT_DATE()
 LIMIT 5;
 
 Then follow reporter steps:
 
 Press Ctrl-Alt-X to explain the current query.
 
 - query plan too big for the results window should appear with scrollbars
 
 Click on the "eye" icon to the right of the word "Overview"
 
 - query plan should shrink to thumbnail size
 
 Left-click mouse inside the thumbnail
 
- MySQL Workbench application crashes
[26 May 2015 19:30] Omar Mendez Andrade
Posted by developer:
 
FIXED

Environment:
MySQL Workbench 6.3.4
Windows 8 x64
Oracle Linux 7

Steps:
1. Open MySQL Workbench and connect to a database.
2. Load or write a sufficiently complex query such that it's explain plan will
not fit inside the results window.
3. Press Ctrl-Alt-X to explain the current query.
   - query plan too big for the results window should appear with scrollbars
4. Click on the "eye" icon to the right of the word "Overview"
   - query plan should shrink to thumbnail size
5. Left-click mouse inside the thumbnail

MySQL Workbench display the section selected with no crash problems
[27 May 2015 1:29] Philip Olson
Posted by developer:
 
Fixed as of the upcoming MySQL Workbench 6.3.4 release, and here's the changelog entry:

Left-clicking on the Visual Explain overview thumbnail would cause
MySQL Workbench to crash.

Thank you for the bug report.