Hi

I am running a custom WebKitGtk based browser and if I switch the URLs or restart playback in quick succession, the WebKitPluginProcess2 occasionally fails with segfault.

https://www.youtube.com/v/y60wDzZt8yg?version=3&vq=hd720&autoplay=1

Appended is gdb output. Any pointers on where I should be looking for fixing this will be much appreciated.

Regards,
Amit

Thread 4 (Thread 0x7fc0cfbff700 (LWP 1368)):
#0  0x00007fc11ed3cc8d in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007fc122f41b34 in g_main_context_iterate (priority=2147483647, n_fds=1, fds=0x7fc0c0001370, timeout=-1, context=0x7fc0c0000900) at gmain.c:4076
        poll_func = 0x7fc122f50f60 <g_poll>
        max_priority = 2147483647
        timeout = -1
        some_ready = <optimized out>
        nfds = 1
        allocated_nfds = 2
        fds = 0x7fc0c0001370
#2  0x00007fc122f41b34 in g_main_context_iterate (context=0x7fc0c0000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3776
        max_priority = 2147483647
        timeout = -1
        some_ready = <optimized out>
        nfds = 1
        allocated_nfds = 2
        fds = 0x7fc0c0001370
#3  0x00007fc122f41ec2 in g_main_loop_run (loop=0x7fc0c0001240) at gmain.c:3975
        __FUNCTION__ = "g_main_loop_run"
#4  0x00007fc129e103c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.14.1/Source/WTF/wtf/glib/RunLoopGLib.cpp:94
        runLoop =
            @0x7fc116df7528: {<WTF::FunctionDispatcher> = {<WTF::ThreadSafeRefCounted<WTF::FunctionDispatcher>> = {<WTF::ThreadSafeRefCountedBase> = {m_refCount = {<std::__atomic_base<int>> = {_M_i = 1}, <No data fields>}}, <No data fields>}, _vptr.FunctionDispatcher = 0x7fc129ff0890 <vtable for WTF::RunLoop+16>}, m_functionQueueLock = {m_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 512, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 17 times>, "\002", '\000' <repeats 21 times>, __align = 0}}, m_functionQueue = {m_start = 12, m_end = 12, m_buffer = {<WTF::VectorBufferBase<WTF::Function<void()> >> = {m_buffer = 0x7fc116dfaf80, m_capacity = 16, m_size = 0}, <No data fields>}}, m_mainContext = {m_ptr = 0x7fc0c0000900}, m_mainLoops = {<WTF::VectorBuffer<WTF::GRefPtr<_GMainLoop>, 0ul>> = {<WTF::VectorBufferBase<WTF::GRefPtr<_GMainLoop> >> = {m_buffer = 0x7fc116dfa600, m_capacity = 16, m_size = 1}, <No data fields>}, <No data fields>}, m_source = {m_ptr = 0x7fc0c0001260}}
        nestedMainLoop = <optimized out>
#5  0x00007fc129e0eeac in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__closure=0x55756b0)
    at /usr/src/debug/webkitgtk-2.14.1/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:58
        this = 0x7fc116dfb5f0
#6  0x00007fc129e0eeac in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
    at /usr/include/c++/4.9.2/functional:2039
#7  0x00007fc129de93f5 in WTF::threadEntryPoint(void*) (this=0x7fc0cfbfebc0) at /usr/include/c++/4.9.2/functional:2439
        context = 0x7fc116df25f0
        entryPoint =
          {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x55756b0, _M_const_object = 0x55756b0, _M_function_pointer = 0x55756b0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x55756b0, this adjustment 72671264}, _M_pod_data = "\260VW\005\000\000\000\000 \340T\004\000\000\000"}, _M_manager = 0x7fc129e0ec30 <std::_Function_base::_Base_manager<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x7fc129e0ee30 <std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &)>}
#8  0x00007fc129de93f5 in WTF::threadEntryPoint(void*) (contextData=0x7fc116df25f0) at /usr/src/debug/webkitgtk-2.14.1/Source/WTF/wtf/Threading.cpp:60
        context = 0x7fc116df25f0
        entryPoint =
          {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x55756b0, _M_const_object = 0x55756b0, _M_function_pointer = 0x55756b0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x55756b0, this adjustment 72671264}, _M_pod_data = "\260VW\005\000\000\000\000 \340T\004\000\000\000"}, _M_manager = 0x7fc129e0ec30 <std::_Function_base::_Base_manager<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x7fc129e0ee30 <std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &)>}
#9  0x00007fc129e0d8fa in WTF::wtfThreadEntryPoint(void*) (param=0x7fc116df91e0) at /usr/src/debug/webkitgtk-2.14.1/Source/WTF/wtf/ThreadingPthreads.cpp:164
        invocation = std::unique_ptr<WTF::ThreadFunctionInvocation> containing 0x7fc116df91e0
#10 0x00007fc1267f652a in start_thread (arg=0x7fc0cfbff700) at pthread_create.c:310
        __res = <optimized out>
        pd = 0x7fc0cfbff700
        now = <optimized out>
        unwind_buf =
              {cancel_jmp_buf = {{jmp_buf = {140466095912704, -7525709328973258248, 140723933580032, 0, 140466095912704, 72729280, 7498159416403075576, 7497653087246393848}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = "" = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
#11 0x00007fc11ed4822d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7fc117629700 (LWP 1298)):
#0  0x00007fc1267fb590 in pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fc11f5dad5c in std::condition_variable::wait(std::unique_lock<std::mutex>&) (__mutex=<optimized out>, __cond=__cond@entry=0x2f3bc8130fe06b00)
    at /usr/src/debug/gcc-4.9.2-20150212/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/x86_64-redhat-linux/bits/gthr-default.h:864
        __e = <optimized out>
#2  0x00007fc11f5dad5c in std::condition_variable::wait(std::unique_lock<std::mutex>&) (this=this@entry=0x7fc12a021c48 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3080>, __lock=...)
    at ../../../../../libstdc++-v3/src/c++11/condition_variable.cc:52
        __e = <optimized out>
#3  0x00007fc129e15d5c in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() (__lock=<synthetic pointer>, this=<optimized out>) at /usr/include/c++/4.9.2/condition_variable:241
---Type <return> to continue, or q <return> to quit---
        __my_lock = {_M_device = 0x0, _M_owns = false}
        __my_lock2 = {_M_device = 0x452fb00, _M_owns = true}
        lock = {_M_device = 0x7fc12a021c44 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3076>, _M_owns = false}
        expectedState = bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::Running
#4  0x00007fc129e15d5c in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() (__p=..., __lock=..., this=<optimized out>) at /usr/include/c++/4.9.2/condition_variable:250
        lock = {_M_device = 0x7fc12a021c44 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3076>, _M_owns = false}
        expectedState = bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::Running
#5  0x00007fc129e15d5c in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() (this=0x7fc12a021c40 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3072>)
    at /usr/src/debug/webkitgtk-2.14.1/Source/bmalloc/bmalloc/AsyncTask.h:126
        lock = {_M_device = 0x7fc12a021c44 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3076>, _M_owns = false}
        expectedState = bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::Running
#6  0x00007fc129e15e89 in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadEntryPoint(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*) (asyncTask=<optimized out>)
    at /usr/src/debug/webkitgtk-2.14.1/Source/bmalloc/bmalloc/AsyncTask.h:106
#7  0x00007fc11f5dee00 in std::(anonymous namespace)::execute_native_thread_routine(void*) (__p=<optimized out>) at ../../../../../libstdc++-v3/src/c++11/thread.cc:84
        __t = <optimized out>
        __local = warning: RTTI symbol not found for class 'std::_Sp_counted_deleter<std::thread::_Impl<std::_Bind_simple<void (*(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*))(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*)> >*, std::__shared_ptr<std::thread::_Impl<std::_Bind_simple<void (*(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*))(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*)> >, (__gnu_cxx::_Lock_policy)2>::_Deleter<std::allocator<std::thread::_Impl<std::_Bind_simple<void (*(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*))(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*)> > > >, std::allocator<std::thread::_Impl<std::_Bind_simple<void (*(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*))(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*)> > >, (__gnu_cxx::_Lock_policy)2>'
warning: RTTI symbol not found for class 'std::_Sp_counted_deleter<std::thread::_Impl<std::_Bind_simple<void (*(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*))(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*)> >*, std::__shared_ptr<std::thread::_Impl<std::_Bind_simple<void (*(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*))(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*)> >, (__gnu_cxx::_Lock_policy)2>::_Deleter<std::allocator<std::thread::_Impl<std::_Bind_simple<void (*(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*))(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*)> > > >, std::allocator<std::thread::_Impl<std::_Bind_simple<void (*(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*))(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*)> > >, (__gnu_cxx::_Lock_policy)2>'
std::shared_ptr (count 1, weak 0) 0x0
#8  0x00007fc1267f652a in start_thread (arg=0x7fc117629700) at pthread_create.c:310
        __res = <optimized out>
        pd = 0x7fc117629700
        now = <optimized out>
        unwind_buf =
              {cancel_jmp_buf = {{jmp_buf = {140467297752832, -7525709328973258248, 140723933581056, 0, 140467297752832, 140467297753536, 7497756680540955128, 7497653087246393848}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = "" = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
#9  0x00007fc11ed4822d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7fc0d0688700 (LWP 1299)):
#0  0x00007fc11ed3cc8d in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007fc122f41b34 in g_main_context_iterate (priority=2147483647, n_fds=2, fds=0x7fc0c8003000, timeout=-1, context=0x7fc0c8000960) at gmain.c:4076
        poll_func = 0x7fc122f50f60 <g_poll>
        max_priority = 2147483647
        timeout = -1
        some_ready = <optimized out>
        nfds = 2
        allocated_nfds = 2
        fds = 0x7fc0c8003000
#2  0x00007fc122f41b34 in g_main_context_iterate (context=0x7fc0c8000960, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3776
        max_priority = 2147483647
        timeout = -1
        some_ready = <optimized out>
        nfds = 2
        allocated_nfds = 2
        fds = 0x7fc0c8003000
#3  0x00007fc122f41ec2 in g_main_loop_run (loop=0x7fc0c80012a0) at gmain.c:3975
        __FUNCTION__ = "g_main_loop_run"
#4  0x00007fc129e103c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.14.1/Source/WTF/wtf/glib/RunLoopGLib.cpp:94

        runLoop =
            @0x7fc116df00f0: {<WTF::FunctionDispatcher> = {<WTF::ThreadSafeRefCounted<WTF::FunctionDispatcher>> = {<WTF::ThreadSafeRefCountedBase> = {m_refCount = {<std::__atomic_base<int>> = {_M_i = 1}, <No data fields>}}, <No data fields>}, _vptr.FunctionDispatcher = 0x7fc129ff0890 <vtable for WTF::RunLoop+16>}, m_functionQueueLock = {m_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 512, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 17 times>, "\002", '\000' <repeats 21 times>, __align = 0}}, m_functionQueue = {m_start = 3, m_end = 3, m_buffer = {<WTF::VectorBufferBase<WTF::Function<void()> >> = {m_buffer = 0x7fc116dfa380, m_capacity = 16, m_size = 0}, <No data fields>}}, m_mainContext = {m_ptr = 0x7fc0c8000960}, m_mainLoops = {<WTF::VectorBuffer<WTF::GRefPtr<_GMainLoop>, 0ul>> = {<WTF::VectorBufferBase<WTF::GRefPtr<_GMainLoop> >> = {m_buffer = 0x7fc116def180, m_capacity = 16, m_size = 1}, <No data fields>}, <No data fields>}, m_source = {m_ptr = 0x7fc0c80012c0}}
        nestedMainLoop = <optimized out>
#5  0x00007fc129e0eeac in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__closure=0x450ff70)
    at /usr/src/debug/webkitgtk-2.14.1/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:58
        this = 0x7fc116dfb078
#6  0x00007fc129e0eeac in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
    at /usr/include/c++/4.9.2/functional:2039
#7  0x00007fc129de93f5 in WTF::threadEntryPoint(void*) (this=0x7fc0d0687bc0) at /usr/include/c++/4.9.2/functional:2439
        context = 0x7fc116df2000
        entryPoint =
          {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x450ff70, _M_const_object = 0x450ff70, _M_function_pointer = 0x450ff70, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x450ff70, this adjustment 44}, _M_pod_data = "p\377P\004\000\000\000\000,\000\000\000\000\000\000"}, _M_manager = 0x7fc129e0ec30 <std::_Function_base::_Base_manager<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x7fc129e0ee30 <std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &)>}
#8  0x00007fc129de93f5 in WTF::threadEntryPoint(void*) (contextData=0x7fc116df2000) at /usr/src/debug/webkitgtk-2.14.1/Source/WTF/wtf/Threading.cpp:60
        context = 0x7fc116df2000
        entryPoint =
---Type <return> to continue, or q <return> to quit---
          {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x450ff70, _M_const_object = 0x450ff70, _M_function_pointer = 0x450ff70, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x450ff70, this adjustment 44}, _M_pod_data = "p\377P\004\000\000\000\000,\000\000\000\000\000\000"}, _M_manager = 0x7fc129e0ec30 <std::_Function_base::_Base_manager<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x7fc129e0ee30 <std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &)>}
#9  0x00007fc129e0d8fa in WTF::wtfThreadEntryPoint(void*) (param=0x7fc116df9010) at /usr/src/debug/webkitgtk-2.14.1/Source/WTF/wtf/ThreadingPthreads.cpp:164
        invocation = std::unique_ptr<WTF::ThreadFunctionInvocation> containing 0x7fc116df9010
#10 0x00007fc1267f652a in start_thread (arg=0x7fc0d0688700) at pthread_create.c:310
        __res = <optimized out>
        pd = 0x7fc0d0688700
        now = <optimized out>
        unwind_buf =
              {cancel_jmp_buf = {{jmp_buf = {140466106959616, -7525709328973258248, 140723933581056, 0, 140466106959616, 140466106960320, 7498194226576138744, 7497653087246393848}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = "" = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
#11 0x00007fc11ed4822d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7fc12a203a40 (LWP 1296)):
#0  0x00007fc0ce46616b in  ()
#1  0x00001871a3b31000 in  ()
#2  0x00001871a3b31000 in  ()
#3  0x00001871a3b31000 in  ()
#4  0x00007ffcd8128faf in  ()
#5  0x00007ffcd8128e70 in  ()
Python Exception <type 'exceptions.OverflowError'> long too big to convert:

#6  0xffffffffffffffff in  ()#7  0x0000000004510c90 in  ()
#8  0x00007fc12322f8c0 in g_source_callback_funcs () at /lib64/libglib-2.0.so.0
#9  0x0000000008b1fa60 in  ()
#10 0x00007fc122f42250 in g_timeout_dispatch () at gmain.c:4324
#11 0x6876ff19e714a1f8 in  ()
#12 0x680ed3b03bd0a1f8 in  ()
#13 0x00007ffc00000000 in  ()
#14 0x0000000004543ef0 in  ()
#15 0x0000000000000000 in  ()



Amit Kachroo | 

Tel: +44(0) 1491 411400 | Fax: +44(0)1491 579254
Email: amit.kach...@onelan.com | Company Website: www.onelan.com & www.reserva.co.uk


ONELAN Limited
Andersen House, Newtown Road, Henley-on-Thames, Oxfordshire. UK, RG9 1HG


Follow us on

This email and any files transmitted with it are confidential and intended solely for the intended recipient. If you are not the named addressee you should not disseminate, distribute, copy or alter this email. Any views or opinions presented in this email are solely those of the author and might not represent those of ONELAN Ltd. Warning: Although ONELAN Ltd has taken reasonable precautions to ensure no viruses are present in this email, the company cannot accept responsibility for any loss or damage arising from the use of this email or attachments.
 

On 11/10/16 17:57, Carlos Garcia Campos wrote:
WebKitGTK+ 2.14.1 is available for download at:

https://webkitgtk.org/releases/webkitgtk-2.14.1.tar.xz (12.8MB)
   md5sum: 8d6c60dc41604d3bbd43165a674c07e5
   sha256sum: 2e2d76c328de65bed6e0e4f096b2720a366654b27fc1af0830ece90bc4b7ceb5

This is the first bug fix release in the stable 2.14 series.

What's new in the WebKitGTK+ 2.14.1 release?
============================================

  - MiniBrowser and jsc binaries are now installed in pkglibexecdir instead of bindir.
  - Improve performance when resizing a window with multiple web views in X11.
  - Check whether GDK can use GL before using gdk_cairo_draw_from_gl() in Wayland.
  - Updated default UserAgent string or better compatibility.
  - Fix a crash on github.com in IntlDateTimeFormat::resolvedOptions when using the C locale.
  - Fix BadDamage X errors when closing the web view in X11.
  - Fix UIProcess crash when using Japanese input method.
  - Fix build with clang due to missing header includes.
  - Fix the build with USE_REDIRECTED_XCOMPOSITE_WINDOW disabled.
  - Fix several crashes and rendering issues.
  - Translation updates: German.

What is WebKitGTK+?
===================

WebKitGTK+ is the GNOME platform port of the WebKit rendering engine.
Offering WebKit's full functionality through a set of GObject-based
APIs, it is suitable for projects requiring any kind of web
integration, from hybrid HTML/CSS applications to full-fledged web
browsers.

Requirements
============

gtk+ >= 3.6.0
glib >= 2.36
libsoup >= 2.42.0
cairo >= 1.10.2
libxml >= 2.8.0
libxslt >= 1.1.7
HarfBuzz >= 0.9.2
icu
fontconfig >= 2.8.0
FreeType2 >= 2.4.2
libsecret
SQLite
enchant

Depending on your configuration options WebKitGTK+ may also depend on:

gtk+ >= 2.24.10
GObject introspection
gstreamer >= 1.0.3
GeoClue >= 2.1.5
gudev
cairo-gl >= 1.10.2

More information
================

If you want to know more about the project or get in touch with us
you may:

- Visit our website at https://www.webkitgtk.org, or the upstream
  site at https://www.webkit.org. People interested in contributing
  should read: https://www.webkit.org/coding/contributing.html.

- Browse the bug list at https://bugs.webkit.org, WebKitGTK+ bugs are
  typically prefixed by "[GTK]." A bug report with a minimal,
  reproducible test case is often just as valuable as a patch.

- Join the #webkit and #webkitgtk+ IRC channels at irc.freenode.net.

- Subscribe to the WebKitGTK+ mailing list,
  https://lists.webkit.org/mailman/listinfo/webkit-gtk, or the
  WebKit development mailing list,
  https://lists.webkit.org/mailman/listinfo/webkit-dev

Thanks
======

Thanks to all the contributors who made possible this release, they
are far too many to list!

The WebKitGTK+ team,
October 11, 2016


_______________________________________________
webkit-gtk mailing list
webkit-gtk@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-gtk


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________
_______________________________________________
webkit-gtk mailing list
webkit-gtk@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-gtk

Reply via email to