https://bugzilla.novell.com/show_bug.cgi?id=627619
https://bugzilla.novell.com/show_bug.cgi?id=627619#c6
--- Comment #6 from Stanislav Brabec 2010-08-19 19:13:11 CEST ---
Thanks for upstreaming this. I planned to do but I forgot.
I will compare your and my packages and create final submit request.
I also grepped the whole openSUSE source tree (just zgrep -l SC_TEST_RET, so
zip files were skipped), and it seems that only the eID-belgium package from
the main tree is broken.
Packages outside openSUSE tree will get rebuilt automatically (but users will
have to install it).
I also debugged the WebKit freeze with opensc. It seems to have nothing with
opensc, it freezes while expanding /usr/lib64/browser-plugins/opensc-signer.so.
It loops forever in webkit-1.2.0/WebCore/plugins/gtk/PluginPackageGtk.cpp
PluginPackage::load() (while (g_file_test(finalPath.get(),
G_FILE_TEST_IS_SYMLINK))...)
Debugging indicates that g_file_resolve_relative_path is never called.
Surprisingly, it does not loop on javaplugin.so and npwrapper.so that are
symlinks as well.
112 GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
112 GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
116 finalPath.set(g_file_get_path(resolvedFile.get()));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
116 finalPath.set(g_file_get_path(resolvedFile.get()));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
112 GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
(gdb)
111 while (g_file_test(finalPath.get(), G_FILE_TEST_IS_SYMLINK)) {
(gdb)
112 GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
112 GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
116 finalPath.set(g_file_get_path(resolvedFile.get()));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
116 finalPath.set(g_file_get_path(resolvedFile.get()));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
112 GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
(gdb)
111 while (g_file_test(finalPath.get(), G_FILE_TEST_IS_SYMLINK)) {
(gdb)
112 GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
(gdb) print finalPath.get();
Invalid character ';' in expression.
(gdb) print finalPath.get()
Can't take address of "finalPath" which isn't an lvalue.
(gdb) b g_file_resolve_relative_path
Breakpoint 1 at 0x7ff4c0f797a0: file gfile.c, line 808.
(gdb) n
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
112 GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
(gdb)
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
(gdb)
..
WebCore::PluginPackage::load (this=0x7ff4a987ec00) at
WebCore/plugins/gtk/PluginPackageGtk.cpp:115
115 GOwnPtr<GFile>
resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
Value returned is $10 = (gchar *) 0x15a51d0 "../opensc-signer.so"
(gdb) show breakpoint
(gdb) info breakpoint
Num Type Disp Enb Address What
1 breakpoint keep y 0x00007ff4c0f797a0 in
IA__g_file_resolve_relative_path at gfile.c:808
breakpoint already hit 1 time
2 breakpoint keep y <MULTIPLE>
breakpoint already hit 1 time
2.1 y 0x00007ff4c0f80380 in IA__g_file_new_for_path
at gfile.c:5895
2.2 y 0x00007ff4c0f803a0 in IA__g_file_new_for_path
at gfile.c:5895
3 breakpoint keep y 0x00007ff4c0643c00 in IA__g_file_read_link at
gfileutils.c:1830
breakpoint already hit 1 time
4 breakpoint keep y 0x00007ff4c0f78e90 in IA__g_file_get_path at
gfile.c:448
breakpoint already hit 1 time
5 breakpoint keep y 0x00007ff4c0642560 in IA__g_file_test at
gfileutils.c:181
breakpoint already hit 1 time
(gdb) n
113 GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.