Comment #22 on issue 17557 by pi...@google.com: Mystery crash on shutdown,  
related to smbios::Exception?
http://code.google.com/p/chromium/issues/detail?id=17557

I don't know for sure why it works sometimes and sometimes doesn't, but  
I've observed
weird, similar crashes running release vs debug.

About RTLD_DEEPBIND, it causes a lot of problems and it may make sense to  
get rid of
it, but we then need to address the problem it is intended to solve.
The main issue is that without this flag, any symbol that chrome has will  
be used by
the plugin before its own. Which means that if chrome defines the same  
symbol as the
plugin, but with a different definition, the plugin will not work. It's a  
huge issue
with the o3d plugin for example, because it uses chrome/base, though a  
somewhat older
version, and possibly compiled with different flags. But that a huge set of  
symbols
that are shared, and problems will ensue if it uses chrome's.
However if setting this flag causes problems, it sounds like some plugins  
end up
using the default (e.g. libc) symbols instead of chrome's, which means that:
- chrome is overriding a default symbol, which I am not aware of, but is  
very
possible
AND
- some data is passed from chrome to the plugin, or vice versa, that is  
unexpectedly
used with respectively chrome's and the default implementation of the  
plugin.

An example: say chrome overrides malloc/free, mallocs a buffer (using  
chrome's
malloc), passes it to the plugin that calls free on it (using the default  
free).
Now, that is not supposed to happen. NPAPI doesn't have any such API.  
Anything
allocated by the browser passed to the plugin is supposed to be freed  
through
NPN_MemFree. At least in theory... NPAPI is loosely defined, to there is  
room for
interpretation everywhere (e.g. plugins calling gtk/glib functions to  
integrate
through the browser main loop).

So, I see 2 paths forward:
- figure out which default symbol are overridden by chrome and leak to the  
plugin,
see how/if we can avoid that, and keep RTLD_DEEPBIND.
- remove RTLD_DEEPBIND but make sure that every single symbol in chrome  
except the
ones that are supposed to leak are made private (objcopy ?).

--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings

--~--~---------~--~----~------------~-------~--~----~
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/group/chromium-bugs
-~----------~----~----~----~------~----~------~--~---

Reply via email to