Crash: Access violation at address

sky2k4's profile image sky2k4 posted 7 years ago in General Permalink

Occurs often when subsequently run query (F9,F9,F9....)

date/time          : 2016-12-26, 13:40:01, 103ms
operating system   : Windows 10 x64 build 14393
system language    : Russian
system up time     : 6 days 1 hour
program up time    : 56 seconds
processors         : 4x Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz
physical memory    : 2437/8054 MB (free/total)
free disk space    : (C:) 44,78 GB
display mode       : 1920x1080, 32 bit
process id         : $3520
allocated memory   : 94,87 MB
largest free block : 131025,99 GB
executable         : heidisql.exe
exec. date/time    : 2016-12-26 13:38
version            : 9.4.0.5143
compiled with      : Delphi XE5
madExcept version  : 4.0.12
callstack crc      : $409e6063, $965331fb, $965331fb
exception number   : 1
exception class    : EAccessViolation
exception message  : Access violation at address 00000000008392AE in module 'heidisql.exe'. Read of address 0000000009CCA000.

main thread ($21ec):
008392ae heidisql.exe SynEditHighlighter 1177   +8 TSynCustomHighlighter.Next
00934665 heidisql.exe SynHighlighterSQL  1782  +34 TSynSQLSyn.Next
0083943c heidisql.exe SynEditHighlighter 1229   +5 TSynCustomHighlighter.SetLineExpandedAtWideGlyphs
00869440 heidisql.exe SynEdit            3618 +150 PaintLines
00869bad heidisql.exe SynEdit            3746  +53 TCustomSynEdit.PaintTextLines
0086522c heidisql.exe SynEdit            2602  +61 TCustomSynEdit.Paint
006a5666 heidisql.exe Vcl.Controls                 TCustomControl.PaintWindow
0069c413 heidisql.exe Vcl.Controls                 TWinControl.PaintHandler
0069d2af heidisql.exe Vcl.Controls                 TWinControl.WMPaint
006a55f8 heidisql.exe Vcl.Controls                 TCustomControl.WMPaint
0040cb1e heidisql.exe System                       TObject.Dispatch
00694ab3 heidisql.exe Vcl.Controls                 TControl.WndProc
0069c17e heidisql.exe Vcl.Controls                 TWinControl.WndProc
00871e76 heidisql.exe SynEdit            6330  +22 TCustomSynEdit.WndProc
0069b3ba heidisql.exe Vcl.Controls                 TWinControl.MainWndProc
005dbcf3 heidisql.exe System.Classes               StdWndProc
7ffa6e3b ntdll.dll                                 KiUserCallbackDispatcher
7ffa6c49 USER32.dll                                PeekMessageW
008144cc heidisql.exe Vcl.Forms                    TApplication.ProcessMessage
00814643 heidisql.exe Vcl.Forms                    TApplication.HandleMessage
00814b2f heidisql.exe Vcl.Forms                    TApplication.Run
00c85647 heidisql.exe heidisql             79  +24 initialization
7ffa6c09 KERNEL32.DLL                              BaseThreadInitThunk
7ffa6e37 ntdll.dll                                 RtlUserThreadStart
sky2k4's profile image sky2k4 posted 7 years ago Permalink

One more

date/time          : 2017-01-03, 12:58:45, 405ms
operating system   : Windows 10 x64 build 14393
system language    : Russian
system up time     : 3 hours 19 minutes
program up time    : 2 hours 49 minutes
processors         : 4x Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz
physical memory    : 3621/8054 MB (free/total)
free disk space    : (C:) 44,32 GB
display mode       : 1920x1080, 32 bit
process id         : $29f4
allocated memory   : 100,03 MB
largest free block : 131025,99 GB
executable         : heidisql.exe
exec. date/time    : 2016-12-26 13:38
version            : 9.4.0.5143
compiled with      : Delphi XE5
madExcept version  : 4.0.12
callstack crc      : $71cf7835, $c34cbac5, $c34cbac5
exception number   : 1
exception class    : EExternalException
exception message  : External exception C000001D.

main thread ($2b90):
00d2b268 heidisql.exe
008ddd3b heidisql.exe VirtualTrees 18088 +53 TBaseVirtualTree.Animate
008bfdc6 heidisql.exe VirtualTrees  5741 +56 TVirtualTreeHintWindow.ActivateHint
006a4e43 heidisql.exe Vcl.Controls           THintWindow.ActivateHintData
00816cdf heidisql.exe Vcl.Forms              TApplication.ActivateHint
008162d2 heidisql.exe Vcl.Forms              TApplication.HintTimerExpired
00810ded heidisql.exe Vcl.Forms              HintTimerProc
7ffe662e USER32.dll                          DispatchMessageW
008145cf heidisql.exe Vcl.Forms              TApplication.ProcessMessage
00814643 heidisql.exe Vcl.Forms              TApplication.HandleMessage
00814b2f heidisql.exe Vcl.Forms              TApplication.Run
00c85647 heidisql.exe heidisql        79 +24 initialization
7ffe659a KERNEL32.DLL                        BaseThreadInitThunk
7ffe66e7 ntdll.dll                           RtlUserThreadStart
sky2k4's profile image sky2k4 posted 7 years ago Permalink

And one more

date/time          : 2017-01-03, 14:34:40, 771ms
operating system   : Windows 10 x64 build 14393
system language    : Russian
system up time     : 4 hours 54 minutes
program up time    : 4 hours 25 minutes
processors         : 4x Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz
physical memory    : 3285/8054 MB (free/total)
free disk space    : (C:) 44,26 GB
display mode       : 1920x1080, 32 bit
process id         : $29f4
allocated memory   : 108,59 MB
largest free block : 131025,99 GB
executable         : heidisql.exe
exec. date/time    : 2016-12-26 13:38
version            : 9.4.0.5143
compiled with      : Delphi XE5
madExcept version  : 4.0.12
callstack crc      : $f70c9046, $367b8403, $367b8403
exception number   : 2
exception class    : EAccessViolation
exception message  : Access violation at address 0000000000D2B230 in module 'heidisql.exe'. Write of address 00000000000000D2.

main thread ($2b90):
00d2b230 heidisql.exe
008ddd3b heidisql.exe VirtualTrees   18088 +53 TBaseVirtualTree.Animate
008bfdc6 heidisql.exe VirtualTrees    5741 +56 TVirtualTreeHintWindow.ActivateHint
006a4e43 heidisql.exe Vcl.Controls             THintWindow.ActivateHintData
00816cdf heidisql.exe Vcl.Forms                TApplication.ActivateHint
0081624f heidisql.exe Vcl.Forms                TApplication.HintMouseMessage
00694868 heidisql.exe Vcl.Controls             TControl.WndProc
0069c17e heidisql.exe Vcl.Controls             TWinControl.WndProc
008ef34e heidisql.exe VirtualTrees   25273 +32 TBaseVirtualTree.WndProc
0069b3ba heidisql.exe Vcl.Controls             TWinControl.MainWndProc
005dbcf3 heidisql.exe System.Classes           StdWndProc
7ffe662e USER32.dll                            DispatchMessageW
008145cf heidisql.exe Vcl.Forms                TApplication.ProcessMessage
00814613 heidisql.exe Vcl.Forms                TApplication.ProcessMessages
008be8bf heidisql.exe VirtualTrees    5379 +10 TVirtualTreeHintWindow.AnimationCallback
008ddc3b heidisql.exe VirtualTrees   18053 +18 TBaseVirtualTree.Animate
008bfdc6 heidisql.exe VirtualTrees    5741 +56 TVirtualTreeHintWindow.ActivateHint
006a4e43 heidisql.exe Vcl.Controls             THintWindow.ActivateHintData
00816cdf heidisql.exe Vcl.Forms                TApplication.ActivateHint
008162d2 heidisql.exe Vcl.Forms                TApplication.HintTimerExpired
00810ded heidisql.exe Vcl.Forms                HintTimerProc
7ffe662e USER32.dll                            DispatchMessageW
008145cf heidisql.exe Vcl.Forms                TApplication.ProcessMessage
00814643 heidisql.exe Vcl.Forms                TApplication.HandleMessage
00814b2f heidisql.exe Vcl.Forms                TApplication.Run
00c85647 heidisql.exe heidisql          79 +24 initialization
7ffe659a KERNEL32.DLL                          BaseThreadInitThunk
7ffe66e7 ntdll.dll
ansgar's profile image ansgar posted 7 years ago Permalink

Does that happen when you hit F9 quite fast, or also when waiting for the result before doing it the next time?

sky2k4's profile image sky2k4 posted 7 years ago Permalink

No, I got those exception when F9 pressed after received previous result. Just noticed that re-connection might be related to issue, exception raised after reconnect

Not sure if that is same exception, but you could reproduce something with steps below

  1. open remote mysql server (in my case ping ~100ms)
  2. use e.g. "SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND != 'Sleep'" as query
  3. press F9 until sql error alert appears (sql(0): or sql(XXX): server has gone away)
  4. it will try to reconnect
  5. exception immediately after reconnect or next time you press F9
sky2k4's profile image sky2k4 posted 7 years ago Permalink

actually, looks like it's more easy to reproduce

steps 1) 2) 3) just to break the connection, you could try to break active connection any other way. And then press F9 on broken connection, app will try to reconnect and will raise exception after that.

Code modification/commit f5224e1 from ansgarbecker, 7 years ago, revision 9.4.0.5144
Work around access violation in highlighter, which raises after a successful reconnect. See http://www.heidisql.com/forum.php?t=23009
ansgar's profile image ansgar posted 7 years ago Permalink

I just committed a fix for that issue, which seems to be a bug in SynEdit. Please update to r5144 and try yourself if that helps. For me it did help, when I manually killed a first connection from a second one.

sky2k4's profile image sky2k4 posted 7 years ago Permalink

Ok thanks, i will check in normal use cases.

Thanks for update!

Just a note - there is still issue reproducible by http://www.heidisql.com/forum.php?t=23009#p23033 (see attached) but that might be due to "not a normal" use case :)

2 attachment(s):
Code modification/commit 6e9778c from ansgarbecker, 7 years ago, revision 9.4.0.5149
Revert r5144, which causes more problems than it solves. See
* http://www.heidisql.com/forum.php?t=23009
* http://www.heidisql.com/forum.php?t=23243
* http://www.heidisql.com/forum.php?t=23196
ansgar's profile image ansgar posted 7 years ago Permalink

Build r5149 now takes back my change from r5144, as this caused more problems than it solved. See

[expired user #11737]'s profile image [expired user #11737] posted 6 years ago Permalink

Friends, I resolved by changing the value of the local variable wait_timeout; by default the time is 10 seconds, which occurred several times the bugs Access violation at address 000000000084C19E in module 'heidisql.exe'.

Run the command:

SET wait_timeout = 300;

Where 300 is in seconds, then the connection wait time changed to 5 minutes.

Note: wait_timeout because it is a local variable you must always execute this command per session. I created a procedure to make it easier for me.

Hope this helps.

ansgar's profile image ansgar posted 6 years ago Permalink

Or you can just set the "Ping every .. seconds" setting in Heidi's session manager to something less than 10s.

[expired user #11737]'s profile image [expired user #11737] posted 6 years ago Permalink

I did the test here and true another way and even better. I always noticed this kind of problem with remote connections, now solved.

Or you can just set the "Ping every .. seconds" setting in Heidi's session manager to something less than 10s.

Please login to leave a reply, or register at first.