On Jun 30, 11:07 am, spiros <[EMAIL PROTECTED]> wrote:
> Even though you don't specify on what OS and compiler you tried to
> compile and run theTestGtkEmbed, this segmentation fault issue is a
> "classic" one on many (usually non-Linux) UNIX machines.
>
> I had the same problem myself (on Solaris 10, using Sun Studio 11
> compilers) and after a lot of searching on the Internet I could not
> find any solution, so I tried to figure out myself how to solve this
> problem and after a lot (I mean a lot) of debugging I think I've found
> where the problem lies.
>
> The segmentation fault occurs upon the first call of gtkmozembed
> library function from theTestGtkEmbedprogram due to the fact that
> those gtkmozembed functions are not exported correctly from the
> library.
>
> Open this file:
>
> /mozilla/embedding/browser/gtk/src/gtkmozembed.h
>
> and go to line 70. There is the following macro definition:
>
> #define GTKMOZEMBED_API(type, name, params) \
> typedef type (NS_FROZENCALL * name##Type) params; \
> extern name##Type name NS_HIDDEN;
>
> The NS_HIDDEN macro implies that the name external variable should be
> hidden.
> This macro is defined in file
>
> /mozilla/xpcom/base/nscore.h
>
> The problem is that in Solaris (and perhaps in several other non-Linux
> unix-es) this macro resolves to nothing (null string) making thus the
> exported symbol NOT hidden and resulting segmentation fault when
> runningTestGtkEmbed.
>
> In Sun C++ compiler (the one I use), a symbol is marked as hidden when
> the keyword __hidden is prepended to the symbol’s declaration.
> Therefore, a quick and dirty (and perhaps non portable) resolution for
> this is to modify the macro definition as follows:
>
> #define GTKMOZEMBED_API(type, name, params) \
> typedef type (NS_FROZENCALL * name##Type) params; \
> extern __hidden name##Type name NS_HIDDEN;
>
> After doing this I had no problem whatsoever runningTestGtkEmbed.
>
> If you are using another compiler, you should check the compiler's
> documentation and find what keyword you should prepend to the
> decleration of a symbol in order to render it hidden.
>
> The proper solution, of course, would be to modify the NS_HIDDEN macro
> in the nscore.h file so that when the source is configured, the macro
> would expand to the appropriated keyword.
>
> Perhaps someone should file a bug at bugzilla.mozilla.org about this.
>
> I hope this helps.
Thank you very much for your response. I apologize for not being more
specific about the OS. It was Ubuntu 7.10 ("Gutsy").
Solution: the problem was solved by adding the following entry to
the .mozconfig file:
"ac_add_options --enable-default-toolkit=gtk2"
It seems obvious now, but the instructions I was following said that
the windowing toolkit would be selected automatically for Firefox 1.9
and above.
_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding