[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#785478: marked as done (jessie-pu: package node-groove/2.2.6-1)



Your message dated Sat, 06 Jun 2015 13:11:11 +0100
with message-id <1433592671.2987.12.camel@adam-barratt.org.uk>
and subject line Fix released with 8.1 point release
has caused the Debian Bug report #785478,
regarding jessie-pu: package node-groove/2.2.6-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
785478: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=785478
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: jessie
User: release.debian.org@packages.debian.org
Usertags: pu

Dear release team,

Node-groove has a bug that is pretty annoying: a missing check in a loop
causes an almost-tight loop to run as long as an encoder object is
attached. More details at the upstream tracker[1]. This is not a
dealbreaker on multicore machines, but it is still annoying and pretty
bad in single-core machines.

We think the smallness of the fix and the greatness of the improvement
makes it good for a stable update. Please find attached the full diff
for the proposed upload.


[1] https://github.com/andrewrk/groovebasin/issues/319

-- System Information:
Debian Release: stretch/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.0.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diff --git a/debian/changelog b/debian/changelog
index 1e510e0..fc1c49f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+node-groove (2.2.6-1+deb8u1) UNRELEASED; urgency=medium
+
+  * Backport patch to fix cpu usage
+
+ -- Felipe Sateler <fsateler@debian.org>  Fri, 15 May 2015 19:05:19 -0300
+
 node-groove (2.2.6-1) unstable; urgency=low
 
   * Update to upstream 2.2.6
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..fae4302
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,2 @@
+[DEFAULT]
+debian-branch = jessie
diff --git a/debian/patches/0001-fix-emitting-buffer-event-too-often.patch b/debian/patches/0001-fix-emitting-buffer-event-too-often.patch
new file mode 100644
index 0000000..bbc5cb6
--- /dev/null
+++ b/debian/patches/0001-fix-emitting-buffer-event-too-often.patch
@@ -0,0 +1,62 @@
+From: Andrew Kelley <superjoe30@gmail.com>
+Date: Thu, 14 May 2015 09:28:25 -0700
+Subject: fix emitting 'buffer' event too often
+
+no longer burns the CPU
+---
+ src/gn_encoder.cc | 15 +++++++++++++--
+ src/gn_encoder.h  |  1 +
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/src/gn_encoder.cc b/src/gn_encoder.cc
+index 0791292..474141f 100644
+--- a/src/gn_encoder.cc
++++ b/src/gn_encoder.cc
+@@ -93,7 +93,10 @@ static void EventThreadEntry(void *arg) {
+     GNEncoder::EventContext *context = reinterpret_cast<GNEncoder::EventContext *>(arg);
+     while (groove_encoder_buffer_peek(context->encoder, 1) > 0) {
+         uv_mutex_lock(&context->mutex);
+-        uv_async_send(&context->event_async);
++        if (context->emit_buffer_ok) {
++            context->emit_buffer_ok = false;
++            uv_async_send(&context->event_async);
++        }
+         uv_cond_wait(&context->cond, &context->mutex);
+         uv_mutex_unlock(&context->mutex);
+     }
+@@ -180,6 +183,7 @@ Handle<Value> GNEncoder::Create(const Arguments& args) {
+     GNEncoder *gn_encoder = node::ObjectWrap::Unwrap<GNEncoder>(instance);
+     EventContext *context = new EventContext;
+     gn_encoder->event_context = context;
++    context->emit_buffer_ok = true;
+     context->event_cb = Persistent<Function>::New(Local<Function>::Cast(args[0]));
+     context->encoder = encoder;
+ 
+@@ -372,7 +376,14 @@ Handle<Value> GNEncoder::GetBuffer(const Arguments& args) {
+     GrooveEncoder *encoder = gn_encoder->encoder;
+ 
+     GrooveBuffer *buffer;
+-    switch (groove_encoder_buffer_get(encoder, &buffer, 0)) {
++    int buf_result = groove_encoder_buffer_get(encoder, &buffer, 0);
++
++    uv_mutex_lock(&gn_encoder->event_context->mutex);
++    gn_encoder->event_context->emit_buffer_ok = true;
++    uv_cond_signal(&gn_encoder->event_context->cond);
++    uv_mutex_unlock(&gn_encoder->event_context->mutex);
++
++    switch (buf_result) {
+         case GROOVE_BUFFER_YES: {
+             Local<Object> object = Object::New();
+ 
+diff --git a/src/gn_encoder.h b/src/gn_encoder.h
+index 063bf60..958815e 100644
+--- a/src/gn_encoder.h
++++ b/src/gn_encoder.h
+@@ -19,6 +19,7 @@ class GNEncoder : public node::ObjectWrap {
+             uv_mutex_t mutex;
+             GrooveEncoder *encoder;
+             v8::Persistent<v8::Function> event_cb;
++            bool emit_buffer_ok;
+         };
+ 
+         GrooveEncoder *encoder;
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..3040e56
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+0001-fix-emitting-buffer-event-too-often.patch

--- End Message ---
--- Begin Message ---
Version: 8.1

Hi,

The fix discussed in this bug was released to stable as part of the 8.1
point release earlier today.

Regards,

Adam

--- End Message ---

Reply to: