diff options
| -rw-r--r-- | mozilla-746112.patch | 86 | ||||
| -rw-r--r-- | mozilla-791626.patch | 46 | ||||
| -rw-r--r-- | thunderbird.spec | 14 | 
3 files changed, 144 insertions, 2 deletions
diff --git a/mozilla-746112.patch b/mozilla-746112.patch new file mode 100644 index 0000000..01f6e16 --- /dev/null +++ b/mozilla-746112.patch @@ -0,0 +1,86 @@ +diff -up xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h.746112 xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h +--- xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h.746112	2012-10-17 16:32:43.000000000 +0200 ++++ xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h	2012-10-24 14:48:12.186640489 +0200 +@@ -103,26 +103,31 @@ struct Cell + }; +  + /* +- * Page size is 4096 by default, except for SPARC, where it is 8192. ++ * Page size must be static to support our arena pointer optimizations, so we ++ * are forced to support each platform with non-4096 pages as a special case. ++ * Note: The freelist supports a maximum arena shift of 15. +  * Note: Do not use JS_CPU_SPARC here, this header is used outside JS. +  * Bug 692267: Move page size definition to gc/Memory.h and include it +  *             directly once jsgc.h is no longer an installed header. +  */ + #if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9)) + const size_t PageShift = 13; ++const size_t ArenaShift = PageShift; ++#elif defined(__powerpc__) ++const size_t PageShift = 16; ++const size_t ArenaShift = 12; + #else + const size_t PageShift = 12; ++const size_t ArenaShift = PageShift; + #endif + const size_t PageSize = size_t(1) << PageShift; ++const size_t ArenaSize = size_t(1) << ArenaShift; ++const size_t ArenaMask = ArenaSize - 1; +  + const size_t ChunkShift = 20; + const size_t ChunkSize = size_t(1) << ChunkShift; + const size_t ChunkMask = ChunkSize - 1; +  +-const size_t ArenaShift = PageShift; +-const size_t ArenaSize = PageSize; +-const size_t ArenaMask = ArenaSize - 1; +- + /* +  * This is the maximum number of arenas we allow in the FreeCommitted state +  * before we trigger a GC_SHRINK to release free arenas to the OS. +diff -up xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp.746112 xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp +--- xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp.746112	2012-10-17 16:32:44.000000000 +0200 ++++ xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp	2012-10-24 14:46:28.253638095 +0200 +@@ -251,6 +251,13 @@ static const int BackgroundPhaseLength[] +     sizeof(BackgroundPhaseStrings) / sizeof(AllocKind) + }; +  ++/* Unused memory decommiting requires the arena size match the page size. */ ++static bool ++DecommitEnabled() ++{ ++    return PageSize == ArenaSize; ++} ++ + #ifdef DEBUG + void + ArenaHeader::checkSynchronizedWithFreeList() const +@@ -742,7 +749,8 @@ Chunk::fetchNextDecommittedArena() +     decommittedArenas.unset(offset); +  +     Arena *arena = &arenas[offset]; +-    MarkPagesInUse(arena, ArenaSize); ++    if (DecommitEnabled()) ++        MarkPagesInUse(arena, ArenaSize); +     arena->aheader.setAsNotAllocated(); +  +     return &arena->aheader; +@@ -2731,7 +2739,7 @@ DecommitArenasFromAvailableList(JSRuntim +                 chunk->removeFromAvailableList(); +  +             size_t arenaIndex = Chunk::arenaIndex(aheader->arenaAddress()); +-            bool ok; ++            bool ok = true; +             { +                 /* +                  * If the main thread waits for the decommit to finish, skip +@@ -2741,7 +2749,8 @@ DecommitArenasFromAvailableList(JSRuntim +                 Maybe<AutoUnlockGC> maybeUnlock; +                 if (!rt->isHeapBusy()) +                     maybeUnlock.construct(rt); +-                ok = MarkPagesUnused(aheader->getArena(), ArenaSize); ++                if (DecommitEnabled()) ++                    ok = MarkPagesUnused(aheader->getArena(), ArenaSize); +             } +  +             if (ok) { diff --git a/mozilla-791626.patch b/mozilla-791626.patch new file mode 100644 index 0000000..c2e77ab --- /dev/null +++ b/mozilla-791626.patch @@ -0,0 +1,46 @@ +# HG changeset patch +# Parent 3523e7f7a89d7933c5f1dc8f5f22559b48ec44c4 +diff --git a/netwerk/base/src/nsIOService.cpp b/netwerk/base/src/nsIOService.cpp +--- a/netwerk/base/src/nsIOService.cpp ++++ b/netwerk/base/src/nsIOService.cpp +@@ -818,17 +818,18 @@ nsIOService::PrefsChanged(nsIPrefBranch  +         if (NS_SUCCEEDED(rv)) { +             if (mSocketTransportService) +                 mSocketTransportService->SetAutodialEnabled(enableAutodial); +         } +     } +  +     if (!pref || strcmp(pref, MANAGE_OFFLINE_STATUS_PREF) == 0) { +         bool manage; +-        if (NS_SUCCEEDED(prefs->GetBoolPref(MANAGE_OFFLINE_STATUS_PREF, ++        if (mNetworkLinkServiceInitialized && ++            NS_SUCCEEDED(prefs->GetBoolPref(MANAGE_OFFLINE_STATUS_PREF, +                                             &manage))) +             SetManageOfflineStatus(manage); +     } +  +     if (!pref || strcmp(pref, NECKO_BUFFER_CACHE_COUNT_PREF) == 0) { +         int32_t count; +         if (NS_SUCCEEDED(prefs->GetIntPref(NECKO_BUFFER_CACHE_COUNT_PREF, +                                            &count))) +@@ -928,16 +929,20 @@ nsIOService::Observe(nsISupports *subjec +     }  +     else if (!strcmp(topic, kProfileDoChange)) {  +         if (data && NS_LITERAL_STRING("startup").Equals(data)) { +             // Lazy initialization of network link service (see bug 620472) +             InitializeNetworkLinkService(); +             // Set up the initilization flag regardless the actuall result. +             // If we fail here, we will fail always on. +             mNetworkLinkServiceInitialized = true; ++            // And now reflect the preference setting ++            nsCOMPtr<nsIPrefBranch> prefBranch; ++            GetPrefBranch(getter_AddRefs(prefBranch)); ++            PrefsChanged(prefBranch, MANAGE_OFFLINE_STATUS_PREF); +         } +     } +     else if (!strcmp(topic, NS_XPCOM_SHUTDOWN_OBSERVER_ID)) { +         // Remember we passed XPCOM shutdown notification to prevent any +         // changes of the offline status from now. We must not allow going +         // online after this point. +         mShutdown = true; +  diff --git a/thunderbird.spec b/thunderbird.spec index 0885f5f..4ab6fce 100644 --- a/thunderbird.spec +++ b/thunderbird.spec @@ -60,7 +60,7 @@  Summary:        Mozilla Thunderbird mail/newsgroup client  Name:           thunderbird  Version:        17.0.2 -Release:        1%{?dist} +Release:        3%{?dist}  URL:            http://www.mozilla.org/projects/thunderbird/  License:        MPLv1.1 or GPLv2+ or LGPLv2+  Group:          Applications/Internet @@ -79,6 +79,7 @@ Source100:      find-external-requires  # Mozilla (XULRunner) patches  Patch0:         thunderbird-install-dir.patch  Patch8:         xulrunner-10.0-secondary-ipc.patch +Patch9:         mozilla-791626.patch  # Build patches  Patch104:       xulrunner-10.0-gcc47.patch @@ -89,6 +90,7 @@ Patch200:       thunderbird-8.0-enable-addons.patch  # PPC fixes  Patch300:       xulrunner-16.0-jemalloc-ppc.patch  Patch301:       rhbz-855923.patch +Patch302:       mozilla-746112.patch  %if %{official_branding}  # Required by Mozilla Corporation @@ -195,7 +197,9 @@ cd %{tarballdir}  # Mozilla (XULRunner) patches  cd mozilla  %patch8 -p3 -b .secondary-ipc +%patch9 -p1 -b .791626  %patch104 -p1 -b .gcc47 +%patch302 -p2 -b .746112  cd ..  %patch200 -p1 -b .addons @@ -300,7 +304,7 @@ export LIBDIR='%{_libdir}'  MOZ_SMP_FLAGS=-j1  # On x86 architectures, Mozilla can build up to 4 jobs at once in parallel,  # however builds tend to fail on other arches when building in parallel. -%ifarch %{ix86} x86_64 +%ifarch %{ix86} x86_64 ppc ppc64  [ -z "$RPM_BUILD_NCPUS" ] && \       RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"  [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 @@ -501,6 +505,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :  #===============================================================================  %changelog +* Tue Jan 15 2013 Martin Stransky <stransky@redhat.com> - 17.0.2-3 +- Added fix for NM regression (mozbz#791626) + +* Tue Jan 15 2013 Jan Horak <jhorak@redhat.com> - 17.0.2-2 +- Added mozilla-746112 patch to fix crash on ppc(64) +  * Thu Jan 10 2013 Remi Collet <RPMS@FamilleCollet.com> - 17.0.2-1  - Sync with rawhide, update to 17.0.2  | 
