Opened 14 years ago
Closed 14 years ago
#184 closed defect (fixed)
Crash on exit when using an embedded window on DIVE mode
Reported by: | KO Myung-Hun | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | Qt 4.6.3 |
Component: | QtGui | Version: | 4.6.2 |
Severity: | high | Keywords: | |
Cc: |
Description
Hi/2.
When using an embedded window on DIVE mode, the following crash occurs on exit.
Killed by SIGSEGV pid=0x0569 ppid=0x002b tid=0x0001 slot=0x00b9 pri=0x0200 mc=0x0001 G:\APPS\QT4\SMPLAYER\SMPLAYER.EXE QTCORE4 0:00174652 cs:eip=005b:12ae4652 ss:esp=0053:00a6fba0 ebp=00a6fbd8 ds=0053 es=0053 fs=150b gs=0000 efl=00012206 eax=20067d80 ebx=2034cc40 ecx=ffffffff edx=20259f4c edi=00000000 esi=2034cc40 Process dumping was disabled, use DUMPPROC / PROCDUMP to enable it.
Setting QT_PM_NO_DIVE=1 prevents this crash.
Used revision is r801.
Change History (16)
comment:1 by , 14 years ago
Component: | General → QtGui |
---|
comment:2 by , 14 years ago
comment:3 by , 14 years ago
Smells like an attempt to access an already destroyed object at termination. I recall that I fixed one such bug near the DIVE code already...
comment:4 by , 14 years ago
Do you mean 'Call stack' ?
And, at a glance, the management of 'subWidgets' seems to be a problem.
comment:5 by , 14 years ago
Yes, of course I mean the call stack trace.
Can you also attach your smplayer.exe/mplayer.exe so that I could try to reproduce it locally?
comment:6 by , 14 years ago
Milestone: | Qt Enhanced → Qt 4.6.3 |
---|
comment:7 by , 14 years ago
Ok. It would be better to reproduce it yourself.
SMPlayer : ftp://ftp.netlabs.org/pub/smplayer/smplayer-0_6_9-b2.zip
MPlayer : http://hobbes.nmsu.edu/download/pub/os2/apps/mmedia/video/players/mplayer-SVN-r30994-OS2-4.4.2.zip
comment:8 by , 14 years ago
No crashes here, SNAP 5.0.5, all kinds of QT_PM_DIVE.
Could you please also try it with the libraries from qqqttt803.zip (#185)?
comment:9 by , 14 years ago
Did you check the output of stdout and stderr ?
You should redirect stdout and stderr to see the crash report.
As you know,
smplayer > crash.log 2>&1
However, unfortunately, I cannot test your testcase libraries because my OS/2 machine has been broken down, maybe due to power failure. After fixing it, I'll test if you cannot still reproduce it.
comment:10 by , 14 years ago
I've downloaded and tested. But the crash still occurs.
Killed by SIGSEGV pid=0x00c1 ppid=0x0028 tid=0x0001 slot=0x009e pri=0x0200 mc=0x0001 G:\APPS\QT4\SMPLAYER\SMPLAYER.EXE QTCORE4 0:00176002 cs:eip=005b:1d476002 ss:esp=0053:00a6fba0 ebp=00a6fbd8 ds=0053 es=0053 fs=150b gs=0000 efl=00012206 eax=20067fc0 ebx=203235c0 ecx=ffffffff edx=2026ae0c edi=00000000 esi=203235c0 Process dumping was disabled, use DUMPPROC / PROCDUMP to enable it.
comment:12 by , 14 years ago
The destructor of QPMDiveWindowSurface accessed already deleted children of the main widget (because children get deleted in the QWidget destructor before QWidget::destroy(), which calls the QWindowSurface destructor, is called). It was actually a regression after r775 (which looks like a typo -- I removed QEvent::Destroy for no sake) that fixed another crash I mentioned above.
Next, I found that there is no need to use HWND as the key any more, with QWidget the code looks a bit nicer and doesn't introduce the problem r775 fixed in the first place (HWND was necessary in some old incarnation of the code which I improved a lot since then). Therefore I also rolled back r775 (partly).
Anyway, please check r808.
comment:14 by , 14 years ago
With r808 I get compiler warning, that "cmplx" might be uninitialized in qt_WinProcessWindowObstacles(). Please check.
comment:16 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Okay, thanks to all. Rudi, the warning is fixed too.
Can you provide a stack trace please?