Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Jan 2008 09:05:51 +1100 (EST)
From:      Peter Jeremy <peterjeremy@optushome.com.au>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/119204: [patch] OpenOffice 2.3 loops when file opened
Message-ID:  <200712312205.lBVM5pNG061809@turion.vk2pj.dyndns.org>
Resent-Message-ID: <200712312210.lBVMA3VU077899@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         119204
>Category:       ports
>Synopsis:       [patch] OpenOffice 2.3 loops when file opened
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Dec 31 22:10:02 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator:     Peter Jeremy
>Release:        FreeBSD 6.3-PRERELEASE amd64
>Organization:
n/a
>Environment:
System: FreeBSD turion.vk2pj.dyndns.org 6.3-PRERELEASE FreeBSD 6.3-PRERELEASE #31: Wed Dec 26 09:23:54 EST 2007 root@turion.vk2pj.dyndns.org:/usr/obj/usr/src/sys/turion amd64

	This also affects i386 and 7.x as well as openoffice-2-devel
>Description:

	OOo will start but whenever I go to open a file, the "unpacking
	file" boxes will appear across the bottom and then the window will
	freeze (not update) and OOo will go to 100% CPU.  The same effect
	occurs if I specify the file on the command line.  Note that
	the 6.x/i386 system has been freshly rebuilt from scratch (no
	installed ports) so all the ports are consistent.

	This has been reported on the mailing lists as
http://lists.freebsd.org/pipermail/freebsd-openoffice/2007-December/003453.html
http://lists.freebsd.org/pipermail/freebsd-openoffice/2007-December/003487.html
 
	OOo reports the following errors:
(process:81488): GLib-GObject-CRITICAL **: gtype.c:2242: initialization assertion failed, use IA__g_type_init() prior to this function
(process:81488): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed
(process:81488): GLib-GObject-CRITICAL **: g_object_new: assertion `G_TYPE_IS_OBJECT (object_type)' failed

	It may be related to the use of WITHOUT_MOZILLA which is the
	default on amd64 and I have it set locally for i386.

>How-To-Repeat:
	Compile OOo with "WITHOUT_MOZILLA=yes" [this may not be required]
	Start OOo and open a document.  The OOo window will stop updating
	(moving other windows over it leaves their image present) and OOo
	will start using 100% CPU.

>Fix:
	The attached fix is an expanded version of the fix referenced
	in http://lists.freebsd.org/pipermail/freebsd-openoffice/2007-December/003464.html
	due to local problems when I tried to use that patch.

--- shell/source/unix/sysshell/systemshell.cxx.orig	2007-12-29 07:58:28.000000000 +1100
+++ shell/source/unix/sysshell/systemshell.cxx	2007-12-29 20:15:55.000000000 +1100
@@ -72,8 +72,10 @@
 const rtl::OUString LIB_RECENT_FILE = UNISTRING("librecentfile.so");
 const rtl::OUString DEFAULT_CONTEXT = UNISTRING("DefaultContext");
 
+#ifdef GTK_IS_BROKEN
 void * (* sym_gtk_recent_manager_get_default) () = NULL;
 void   (* sym_gtk_recent_manager_add_item) (void *, const char *) = NULL;
+#endif
 
 // We need to re-encode file urls because osl_getFileURLFromSystemPath converts
 // to UTF-8 before encoding non ascii characters, which is not what other apps expect.
@@ -114,6 +116,7 @@
         return url;
     }
     
+#ifdef GTK_IS_BROKEN
     bool init_recent_manager_api()
     {
         oslModule hDefault;
@@ -128,24 +131,28 @@
         bool ret = (NULL != sym_gtk_recent_manager_get_default) && (NULL != sym_gtk_recent_manager_add_item);
         return ret;
     }
-            
+#endif
     
     //##############################
     void AddToRecentDocumentList(const rtl::OUString& aFileUrl, const rtl::OUString& aMimeType)
     {
+#ifdef GTK_IS_BROKEN
         static bool bIsRecentManagerPresent = init_recent_manager_api();
+#endif
         
         // Convert file URL for external use (see above)
         rtl::OUString externalUrl = translateToExternalUrl(aFileUrl);
         if( 0 == externalUrl.getLength() )
             externalUrl = aFileUrl;
         
+#ifdef GTK_IS_BROKEN
         if( bIsRecentManagerPresent )
         {
             void * recent_manager = sym_gtk_recent_manager_get_default();
             sym_gtk_recent_manager_add_item(recent_manager, rtl::OUStringToOString(aFileUrl, RTL_TEXTENCODING_UTF8).getStr());
         }
         else
+#endif
         {
             rtl::OUString librecentfile_url = get_absolute_library_url(LIB_RECENT_FILE);
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200712312205.lBVM5pNG061809>