Plugin Hangs in NPP_Destroy method of plugin

VERIFIED INVALID

Status

()

P2
critical
VERIFIED INVALID
16 years ago
16 years ago

People

(Reporter: kdekorte, Assigned: peterlubczynski-bugs)

Tracking

Trunk
Future
x86
Linux
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(URL)

Attachments

(1 attachment)

(Reporter)

Description

16 years ago
User-Agent:       Mozilla/5.0 (compatible; Konqueror/3; Linux)
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202

I have written a custom plugin. You can get the source at  
http://mplayerplug-in.sourceforge.net/  
  
The plugin works perfectly, if you select a video, it will play using the  
plugin. If you close mozilla and reopen you can play another video. But if you  
don't close Mozilla and select another video Mozilla will hang. Sometimes  
using 100% cpu sometimes not. I see this problem in Mozilla 1.2.1, Netscape  
4.x, Phoenix 0.50, but NOT in Konqueror. The problem seems to occur either  
right before or right after Mozilla calls NPP_Destory in my plugin when 
dealing with the mode NP_EMBED.  
  
Bug could be related to other bugs 148829, 178494 and 175588  
  
Machine info:  
  
RedHat 8.0  
Mozilla downloaded from mozilla.org as an RPM   
mozilla-1.2.1-0_rh8_xft.i386.rpm  
mozilla-chat-1.2.1-0_rh8_xft.i386.rpm  
mozilla-devel-1.2.1-0_rh8_xft.i386.rpm  
mozilla-dom-inspector-1.2.1-0_rh8_xft.i386.rpm  
mozilla-js-debugger-1.2.1-0_rh8_xft.i386.rpm  
mozilla-mail-1.2.1-0_rh8_xft.i386.rpm  
mozilla-nspr-1.2.1-0_rh8_xft.i386.rpm  
mozilla-nspr-devel-1.2.1-0_rh8_xft.i386.rpm  
mozilla-nss-1.2.1-0_rh8_xft.i386.rpm  
mozilla-nss-devel-1.2.1-0_rh8_xft.i386.rpm  
mozilla-psm-1.2.1-0_rh8_xft.i386.rpm  
  
Plugin compiled with   
  
gcc -v  
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2/specs  
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man  
--infodir=/usr/share/info --enable-shared --enable-threads=posix  
--disable-checking --host=i386-redhat-linux --with-system-zlib  
--enable-__cxa_atexit  
Thread model: posix  
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)  
  
  
Debug info  
  
Note: in this example PID 4558 is the root mozilla-bin process  
  
Program received signal SIGSEGV, Segmentation fault.  
[Switching to Thread 8192 (LWP 4558)]     
0x089abf7e in ?? ()  
  
(gdb) bt  
#0  0x089abf7e in ?? ()  
#1  0x414da5e1 in imgRequestProxy::GetImage ()  
   from /usr/lib/mozilla-1.2.1/components/libimglib2.so  
#2  0x41b4246f in nsImageFrame::GetDesiredSize ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#3  0x41b42afc in nsImageFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#4  0x41b50037 in nsLineLayout::ReflowFrame ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#5  0x41b4c4e4 in nsInlineFrame::ReflowInlineFrame ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#6  0x41b4c18b in nsInlineFrame::ReflowFrames ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#7  0x41b4bff8 in nsInlineFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#8  0x41b50037 in nsLineLayout::ReflowFrame ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#9  0x41b1e638 in nsBlockFrame::ReflowInlineFrame ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#10 0x41b1e402 in nsBlockFrame::DoReflowInlineFrames ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#11 0x41b1e1e7 in nsBlockFrame::DoReflowInlineFramesAuto ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#12 0x41b1e095 in nsBlockFrame::ReflowInlineFrames ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#13 0x41b1c9b1 in nsBlockFrame::ReflowLine ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#14 0x41b1c101 in nsBlockFrame::ReflowDirtyLines ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#15 0x41b1ac04 in nsBlockFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#16 0x41b22c08 in nsBlockReflowContext::ReflowBlock ()  
---Type <return> to continue, or q <return> to quit---  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#17 0x41b1da2b in nsBlockFrame::ReflowBlockFrame ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#18 0x41b1c60f in nsBlockFrame::ReflowLine ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#19 0x41b1c101 in nsBlockFrame::ReflowDirtyLines ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#20 0x41b1ac04 in nsBlockFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#21 0x41b22c08 in nsBlockReflowContext::ReflowBlock ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#22 0x41b1da2b in nsBlockFrame::ReflowBlockFrame ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#23 0x41b1c60f in nsBlockFrame::ReflowLine ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#24 0x41b1c101 in nsBlockFrame::ReflowDirtyLines ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#25 0x41b1ac04 in nsBlockFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#26 0x41b292d4 in nsContainerFrame::ReflowChild ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#27 0x41b3c503 in CanvasFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#28 0x41c0e0ef in nsBoxToBlockAdaptor::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#29 0x41c0db60 in nsBoxToBlockAdaptor::DoLayout ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#30 0x41c0ab91 in nsBox::Layout ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#31 0x41c004b7 in nsScrollBoxFrame::DoLayout ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#32 0x41c0ab91 in nsBox::Layout ()  
---Type <return> to continue, or q <return> to quit---  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#33 0x41c0fed8 in nsContainerBox::LayoutChildAt ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#34 0x41b38c64 in nsGfxScrollFrameInner::LayoutBox ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#35 0x41b38f45 in nsGfxScrollFrameInner::Layout ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#36 0x41b38cab in nsGfxScrollFrame::DoLayout ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#37 0x41c0ab91 in nsBox::Layout ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#38 0x41c1d413 in nsBoxFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#39 0x41b381d7 in nsGfxScrollFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#40 0x41b292d4 in nsContainerFrame::ReflowChild ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#41 0x41b8559a in ViewportFrame::Reflow ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#42 0x41b62305 in IncrementalReflow::Dispatch ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#43 0x41b6e996 in PresShell::ProcessReflowCommands ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#44 0x41b6e4db in HandlePLEvent ()  
   from /usr/lib/mozilla-1.2.1/components/libgklayout.so  
#45 0x401870ff in PL_HandleEvent () from /usr/lib/libxpcom.so  
#46 0x4018700d in PL_ProcessPendingEvents () from /usr/lib/libxpcom.so  
#47 0x401880e7 in nsEventQueueImpl::ProcessPendingEvents ()  
   from /usr/lib/libxpcom.so  
#48 0x40c55e76 in event_processor_callback ()  
   from /usr/lib/mozilla-1.2.1/components/libwidget_gtk.so  
#49 0x40c55bc5 in our_gdk_io_invoke ()  
---Type <return> to continue, or q <return> to quit---  
   from /usr/lib/mozilla-1.2.1/components/libwidget_gtk.so  
#50 0x403e3076 in g_io_unix_dispatch () from /usr/lib/libglib-1.2.so.0  
#51 0x403e497e in g_main_dispatch () from /usr/lib/libglib-1.2.so.0  
#52 0x403e4e59 in g_main_iterate () from /usr/lib/libglib-1.2.so.0  
#53 0x403e50f4 in g_main_run () from /usr/lib/libglib-1.2.so.0  
#54 0x402e46df in gtk_main () from /usr/lib/libgtk-1.2.so.0  
#55 0x40c562be in nsAppShell::Run ()  
   from /usr/lib/mozilla-1.2.1/components/libwidget_gtk.so  
#56 0x40c3b122 in nsAppShellService::Run ()  
   from /usr/lib/mozilla-1.2.1/components/libnsappshell.so  
#57 0x0805308f in main1 ()  
#58 0x08053995 in main ()  
#59 0x420158d4 in __libc_start_main () from /lib/i686/libc.so.6  
  
  
  
  

Reproducible: Always

Steps to Reproduce:
1.open page with embedded video  
2.watch part of video  
3.select a different video, repeat step 1 
Actual Results:  
Mozilla will hang after 2nd or 3rd selected video 

Expected Results:  
Mozilla should not hang 

If I replace the call in the plugin to spawn some other app other than mplayer  
(gedit for example) the results are the same. So it does not appear to be app  
specific.  
  
I have also tried capturing the window destory event for the child window and  
it never seems to get to me.   
 
If there is a work around or a recommended proceedure that I am not doing 
please let me know. I have been struggling with this issue for days.  
 
Also, the problem only seems to occur when the plugin recieves a link of type 
NP_EMBED of I get a NP_FULL I have no problems at all.
(Assignee)

Comment 1

16 years ago
can you attach a plugin log?

set NSPR_LOG_MODULES=Plugin:8,PluginNPN:8,PluginNPP:8
set NSPR_LOG_FILE=/tmp/plugin.log
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P2
Target Milestone: --- → Future
(Reporter)

Comment 2

16 years ago
Created attachment 111852 [details]
Requested plugin log

Here is the requested file
(Reporter)

Comment 3

16 years ago
Also, I have captured the Window destroy event now, but it does not seem to help
much.
(Reporter)

Comment 4

16 years ago
I took a look at another log I generated... and here are the main diffs

Section 1

8192[80896e0]: NPN_Status: npp=89df168, message=Done
8192[80896e0]: nsPluginStreamListenerPeer::OnDataAvailable this=8975e20
request=89409d8, offset=1086, length=2750,
url=http://a944.g.akamai.net/7/944/51/a814f5c0bdf5ef/www.apple.com/switch/ads/images/janieporche_ctp2.mov
8192[80896e0]: nsPluginStreamListenerPeer::OnStopRequest this=8975e20
aStatus=-2147467259 request=89409d8
8192[80896e0]: nsPluginStreamListenerPeer::dtor this=8975e20,
url=http://a944.g.akamai.net/7/944/51/a814f5c0bdf5ef/www.apple.com/switch/ads/images/janieporche_ctp2.mov
8192[80896e0]: NPN_MemFree: ptr=86b5548
8192[80896e0]: nsPluginHostImpl::StopPluginInstance called instance=89df150

End of log at the crash:
8192[80896e0]: NPN_Status: npp=86ef1d8, message=Done
8192[80896e0]: nsPluginStreamListenerPeer::OnDataAvailable this=86bcc58
request=8a425e0, offset=1111, length=2750,
url=http://a1392.g.akamai.net/7/1392/51/03ec2621e43100/www.apple.com/switch/ads/images/tonyhawk_ctp2.mov
8192[80896e0]: nsPluginStreamListenerPeer::OnStopRequest this=86bcc58
aStatus=-2147467259 request=8a425e0
8192[80896e0]: nsPluginStreamListenerPeer::dtor this=86bcc58,
url=http://a1392.g.akamai.net/7/1392/51/03ec2621e43100/www.apple.com/switch/ads/images/tonyhawk_ctp2.mov


Notice that the NPN_Memfree is missing from the end of the log?
Perhaps that is where the code is crashing?




Blocks: 139315
(Reporter)

Comment 5

16 years ago
Problem turned out to be a pointer error in the plugin, that only showed up
after 2 or 3 runs...
Status: NEW → RESOLVED
Last Resolved: 16 years ago
Resolution: --- → FIXED

Comment 6

16 years ago
.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---

Comment 7

16 years ago
Marking INVALID as no specific patch fixed this bug and it wasn't a mozilla bug
anyway.
Status: REOPENED → RESOLVED
Last Resolved: 16 years ago16 years ago
Resolution: --- → INVALID
VERIFIED INVALID based upon reporters comments.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.