Closed Bug 510963 Opened 15 years ago Closed 15 years ago

getting NPNVPluginElementNPObject fails

Categories

(Core Graveyard :: Plug-ins, defect, P1)

1.9.2 Branch
x86
Linux

Tracking

(status1.9.2 beta1-fixed, status1.9.1 unaffected)

RESOLVED FIXED
mozilla1.9.2
Tracking Status
status1.9.2 --- beta1-fixed
status1.9.1 --- unaffected

People

(Reporter: hsumen, Assigned: benjamin)

References

()

Details

(Keywords: crash, regression)

Attachments

(2 files)

User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a2pre) Gecko/20090817 Namoroka/3.6a2pre
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a2pre) Gecko/20090817 Namoroka/3.6a2pre

Embedded wmv, wav, mp3, mpeg etc... files play fine in Fx 3.5 on Linux using the totem-mozilla plugin (v. 2.26.1) but break in nightly Namoroka and Minefield builds. Additionally, resizing the browser while on a page with embedded media causes the browser to crash.

Reproducible: Always

Steps to Reproduce:
1. Navigate to, for instance, http://home.att.net/~cherokee68/testwave.html and choose a test file.
2. The plugin looks like it loads but the file does not play.
3. If your browser is maximized, unmaximize it, if unmaximized, maximize or resize it.
Actual Results:  
The file doesn't play, the browser crashes if an attempt to resize it is made.

Expected Results:  
The test wav should play, the browser should be resizeable.

Using Ubuntu Jaunty 9.04. Personally tested with both 32bit and 64bit architectures. More info at the mozillaZine nightly branch forum...
http://forums.mozillazine.org/viewtopic.php?p=7262675#p7262675
Verified by A'ja...
http://forums.mozillazine.org/viewtopic.php?p=7265405#p7265405

Some crash ID's...
1250540719
1250539675
1250539136
Version: unspecified → 3.6 Branch
Keywords: regression
Sorry, I haven't filed a bug in ages and things have changed quite a bit. Thanks for the link, timeless, I didn't realize the "Last Crash" file in !/.mozilla/firefox was just a time stamp. Hopefully, this will be more helpful...
http://crash-stats.mozilla.com/report/index/a4464708-cbe5-4457-b1d2-857112090817?p=1
No plugin is actually on the stack, which is interesting. Moving to Core:Plugins
Component: Extension Compatibility → Plug-ins
Product: Firefox → Core
QA Contact: extension.compatibility → plugins
Version: 3.6 Branch → 1.9.2 Branch
Flags: blocking1.9.2?
libgobject-2.0.so.0.2000.1@0x29302
gtk_xtbin_new
nsPluginNativeWindowGtk2::CreateXtWindow
nsPluginNativeWindowGtk2::CallSetWindow
nsObjectFrame::CallSetWindow
nsObjectFrame::DidReflow
nsLineLayout::ReflowFrame
nsBlockFrame::ReflowInlineFrame
nsBlockFrame::DoReflowInlineFrames
nsBlockFrame::ReflowInlineFrames
nsBlockFrame::ReflowLine
nsBlockFrame::ReflowDirtyLines
nsBlockFrame::Reflow
nsBlockReflowContext::ReflowBlock
nsBlockFrame::ReflowBlockFrame
nsBlockFrame::ReflowLine
nsBlockFrame::ReflowDirtyLines

the only loaded plugin i can find is:
 72973D3A409794225D71BF5796E80EBC0  	libflashplayer.so
I'm not a programmer, so sorry if this is irrelevant... I have Fx 3.5.2, 3.6a2pre and 3.7a1pre all installed in their own folders in /opt. All have only one plugin in their plugins folders, libnullplugin.so. The only place I see totem plugins is in /usr/lib/mozilla/plugins where I see shortcuts for libtotem-cone-plugin.so, libtotem-gmp-plugin.so, libtotem-mully-plugin.so and libtotem-narrowspace-plugin.so. All point to ../../totem/default/. All 3 versions show those 4 files as plugins in about:plugins and Addons>Plugins- VLC Multimedia Plugin (compatible Totem 2.26.1), Windows Media-player Plug-in 10 (compatible; Totem), DivX Web Player and QuickTime Plug-in 7.20. Here is what about:plugins lists...
Default Plugin

    File: libnullplugin.so
    Version: 1.0.0.15
    The default plugin handles plugin data for mimetypes and extensions that are not specified and facilitates downloading of new plugins.

MIME Type 	Description 	Suffixes 	Enabled
* 	All types 	.* 	No
VLC Multimedia Plugin (compatible Totem 2.26.1)

    File: libtotem-cone-plugin.so
    Version: 
    The Totem 2.26.1 plugin handles video and audio streams.

MIME Type 	Description 	Suffixes 	Enabled
application/x-vlc-plugin 	VLC Multimedia Plugin 		Yes
application/vlc 	VLC Multimedia Plugin 		Yes
video/x-google-vlc-plugin 	VLC Multimedia Plugin 		Yes
application/x-ogg 	Ogg multimedia file 	ogg 	Yes
application/ogg 	Ogg multimedia file 	ogg 	Yes
audio/ogg 	Ogg Audio 	oga 	Yes
audio/x-ogg 	Ogg Audio 	ogg 	Yes
video/ogg 	Ogg Video 	ogv 	Yes
video/x-ogg 	Ogg Video 	ogg 	Yes
application/annodex 	Annodex exchange format 	anx 	Yes
audio/annodex 	Annodex Audio 	axa 	Yes
video/annodex 	Annodex Video 	axv 	Yes
video/mpeg 	MPEG video 	mpg, mpeg, mpe 	Yes
audio/wav 	WAV audio 	wav 	Yes
audio/x-wav 	WAV audio 	wav 	Yes
audio/mpeg 	MP3 audio 	mp3 	Yes
application/x-nsv-vp3-mp3 	NullSoft video 	nsv 	Yes
video/flv 	Flash video 	flv 	Yes
application/x-totem-plugin 	Totem Multimedia plugin 		Yes
Windows Media Player Plug-in 10 (compatible; Totem)

    File: libtotem-gmp-plugin.so
    Version: 
    The Totem 2.26.1 plugin handles video and audio streams.

MIME Type 	Description 	Suffixes 	Enabled
application/x-mplayer2 	AVI video 	avi, wma, wmv 	Yes
video/x-ms-asf-plugin 	ASF video 	asf, wmv 	Yes
video/x-msvideo 	AVI video 	asf, wmv 	Yes
video/x-ms-asf 	ASF video 	asf 	Yes
video/x-ms-wmv 	Windows Media video 	wmv 	Yes
video/x-wmv 	Windows Media video 	wmv 	Yes
video/x-ms-wvx 	Windows Media video 	wmv 	Yes
video/x-ms-wm 	Windows Media video 	wmv 	Yes
video/x-ms-wmp 	Windows Media video 	wmv 	Yes
application/x-ms-wms 	Windows Media video 	wms 	Yes
application/x-ms-wmp 	Windows Media video 	wmp 	Yes
application/asx 	Microsoft ASX playlist 	asx 	Yes
audio/x-ms-wma 	Windows Media audio 	wma 	Yes
DivX® Web Player

    File: libtotem-mully-plugin.so
    Version: 
    DivX Web Player version 1.4.0.233

MIME Type 	Description 	Suffixes 	Enabled
video/divx 	AVI video 	divx 	Yes
QuickTime Plug-in 7.2.0

    File: libtotem-narrowspace-plugin.so
    Version: 
    The Totem 2.26.1 plugin handles video and audio streams.

MIME Type 	Description 	Suffixes 	Enabled
video/quicktime 	QuickTime video 	mov 	Yes
video/mp4 	MPEG-4 video 	mp4 	Yes
image/x-macpaint 	MacPaint Bitmap image 	pntg 	Yes
image/x-quicktime 	Macintosh Quickdraw/PICT drawing 	pict, pict1, pict2 	Yes
video/x-m4v 	MPEG-4 video 	m4v 	Yes
Java(TM) Plug-in 1.6.0_14

    File: libnpjp2.so
    Version: 
    The next generation Java plug-in for Mozilla browsers.

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-vm 	Java™ Plug-in 		Yes
application/x-java-applet 	Java™ Plug-in Applet 		Yes
application/x-java-applet;version=1.1 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.1.1 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.1.2 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.1.3 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.2 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.2.1 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.2.2 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.3 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.3.1 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.4 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.4.1 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.4.2 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.5 	Java™ Plug-in 		Yes
application/x-java-applet;version=1.6 	Java™ Plug-in 		Yes
application/x-java-applet;jpi-version=1.6.0_14 	Java™ Plug-in 		Yes
application/x-java-bean 	Java™ Plug-in JavaBeans 		Yes
application/x-java-bean;version=1.1 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.1.1 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.1.2 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.1.3 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.2 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.2.1 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.2.2 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.3 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.3.1 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.4 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.4.1 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.4.2 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.5 	Java™ Plug-in 		Yes
application/x-java-bean;version=1.6 	Java™ Plug-in 		Yes
application/x-java-bean;jpi-version=1.6.0_14 	Java™ Plug-in 		Yes
Shockwave Flash

    File: libflashplayer.so
    Version: 
    Shockwave Flash 10.0 r32

MIME Type 	Description 	Suffixes 	Enabled
application/x-shockwave-flash 	Shockwave Flash 	swf 	Yes
application/futuresplash 	FutureSplash Player 	spl 	Yes

Here is a stack from a Minefield crash, this time on the Penguin.mpeg file from the same test address...
http://crash-stats.mozilla.com/report/index/1415596f-c74a-415d-878e-ae7532090817?p=1

BTW, if I do force a crash by resizing my browser, the History for http://home.att.net/~cherokee67/ gets erased.

Please let me know what other info I can provide (or whether I'm spamming my own bug;-) )
sorry, i should have paid more attention, comment 4 should also have noted:
 708891FB6B4661539B7608CD04888B090  	libtotem-cone-plugin.so
 866CBD308A2A06B809C91F0D1872A9B80  	libtotem-plparser-mini.so.12.2.5

so, i'm definitely willing to accept the crashes are related to totem, your second crash doesn't have flash player loaded (good).

I think the best thing would be for you to build firefox (or get dbg symbols, we have a script http://people.mozilla.com/~tmielczarek/fetch-symbols.py but it'd probably be easier to build firefox than figure out how to use it), and install dbg symbols for your platform libraries (libgobject-2.0, gtk, glib, gdk, x11), and reproduce this with a debugger.
um, maybe the script would be easier;)?
http://forums.mozillazine.org/viewtopic.php?f=23&t=1429115
Depends on: 491722
Keywords: crash
Summary: Can't play embedded media in Namoroka or Minefield using Totem plugin. → Can't play embedded media in Namoroka or Minefield using Totem plugin. [@libgobject-2.0.so.0.2000.1@0x29302 ]
Status: UNCONFIRMED → NEW
Ever confirmed: true
Strike Comment #7, I  managed to successfully build w/ dbg symbols and obtain a backtrace...

Thanks for your help, timeless, I saw in another bug that you're a bit strung out. I appreciate the help. Attaching the backtrace, hope it helps...
Group: core-security
Whiteboard: [sg:dup 491722]
Whiteboard: [sg:dup 491722] → [sg:dupe 491722]
Right, the two issues reported here could be unrelated.
Summary: Can't play embedded media in Namoroka or Minefield using Totem plugin. [@libgobject-2.0.so.0.2000.1@0x29302 ] → Can't play embedded media in Namoroka or Minefield using Totem plugin. [@ __assert_fail - gtk_xtbin_new] (parent_window != NULL)
Thanks for the regression range.

For video/x-ms-wmv found plugin libtotem-gmp-plugin.so
** Message: NP_Initialize
** Message: NP_Initialize succeeded
** Message: totemPlugin [0x7fecd9f62ae0]
** Message: Init mimetype 'video/x-ms-wmv' mode 2
** Message: Failed to get our DOM Element NPObject
** Message: ~totemPlugin [0x7fecd9f62ae0]

Looks like the totem plugin uses NPNVDOMElement.
Blocks: 500513
Actually the totem plugin uses NPNVPluginElementNPObject.

_getpluginelement() uses NPNVDOMElement:
http://hg.mozilla.org/mozilla-central/file/03893d936c2b/modules/plugin/base/src/nsNPAPIPlugin.cpp#l1170
Karl, can you investigate more here? I think we should fix this for 1.9.2...
Flags: blocking1.9.2? → blocking1.9.2+
Priority: -- → P2
Target Milestone: --- → mozilla1.9.2
I guess _getpluginelement() can be implemented without using NPNVDOMElement, so that NPNVPluginElementNPObject can continue to be supported, but Josh would know more about this than I.

https://developer.mozilla.org/en/Gecko_Plugin_API_Reference/Scripting_plugins
Summary: Can't play embedded media in Namoroka or Minefield using Totem plugin. [@ __assert_fail - gtk_xtbin_new] (parent_window != NULL) → Can't play embedded media in Namoroka or Minefield using Totem plugin - NPNVPluginElementNPObject error [@ __assert_fail - gtk_xtbin_new] (parent_window != NULL)
Oh man, yes! I certainly didn't realize that _getpluginelement depended on NPNVDOMElement. Ugh. This part is unrelated to bug 491722
Group: core-security
No longer depends on: 491722
Summary: Can't play embedded media in Namoroka or Minefield using Totem plugin - NPNVPluginElementNPObject error [@ __assert_fail - gtk_xtbin_new] (parent_window != NULL) → getting NPNVPluginElementNPObject fails
Whiteboard: [sg:dupe 491722]
Assignee: joshmoz → benjamin
Priority: P2 → P1
Comment on attachment 399739 [details] [diff] [review]
Re-implement NPNVPluginElementNPObject with tests, rev. 1

Yikes, glad we're fixing this.

+  // Set a property on NPNVPluginElementNPObject
+  NPObject *o = NULL;
+  err = NPN_GetValue(instance, NPNVPluginElementNPObject, &o);
+  if (err == NPERR_NO_ERROR) {
+    NPN_SetProperty(instance, o,
+                    NPN_GetStringIdentifier("pluginFoundElement"), &variantTrue);
+    NPN_ReleaseObject(o);
+  }
+  
+  // Set a property on NPNVWindowNPObject
+  err = NPN_GetValue(instance, NPNVWindowNPObject, &o);
+  if (err == NPERR_NO_ERROR) {
+    NPN_SetProperty(instance, o,
+                    NPN_GetStringIdentifier("pluginFoundWindow"), &variantTrue);
+    NPN_ReleaseObject(o);
+  }

This is practically safe, but if we're going to have "o" be used for multiple unrelated things then I'd rather not have pointer values floating around that are, strictly speaking, invalid at certain times. Please use separate more-descriptively named variables or null out "o" when you release it.
Attachment #399739 - Flags: review?(joshmoz) → review+
http://hg.mozilla.org/mozilla-central/rev/04f404110d25
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Thanks everyone!
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: