Package: dvd+rw-tools
Version: 7.0-2
Tags: patch

On Mon, Oct 30, 2006 at 06:12:23PM -0500, Doug Chapman wrote:
> On Mon, 2006-10-30 at 16:04 -0700, dann frazier wrote:
> > On Mon, Oct 30, 2006 at 05:39:49PM -0500, Doug Chapman wrote:
> > > FYI, on RHEL5 growisofs (which is used for DVD writing) is broken for
> > > ia64.  Not sure how many of you do DVD writing on your ia64 systems but
> > > if you do need it I have a fixed version of dvd+rw-tools available.
[snip]
> > I'd like to see if this affects Debian - got a pointer to the patch and a
> > description of the issue?
> > 
> 
> Dan,
> 
> I was able to reproduce at least part of this even on the standard
> upstream dvd+rw-tools so I imagine debian will have the problem as well.
> The initial problem is it cannot allocate enough space when it tries to
> mmap a buffer:
> 
> # growisofs -Z /dev/dvdrw=RHEL5-Server-20060830.1-ia64-DVD.iso
> :-( unable to anonymously mmap 16777216: Resource temporarily
> unavailable

Debian has 7.0, and I've verified that this portion of the patch is
included.

> Then I hit the next problem, it fails when it tries to create threads
> since it is trying to set a very small stack size for each thread
> (likely related to the previous issue) so I write a quick ugly patch for
> that one myself.  I don't really like the patch but it is the best I can
> do with the current code base

This patch is missing from Debian, so I am filing a bug for it.

> I am attaching the patch, it includes both fixes above.

Below is the portion of the patch that is not yet included in
Debian. I have not reproduced this issue on Debian because I don't
have a DVD burner.

Thanks Doug (bcc'd)

--- dvd+rw-tools-6.1/mp.h.old   2006-10-30 16:41:41.000000000 -0500
+++ dvd+rw-tools-6.1/mp.h       2006-10-30 17:18:45.000000000 -0500
@@ -31,15 +31,19 @@
 #include <sched.h>
 #include <semaphore.h>
 #include <stdlib.h>
+#include <limits.h>
 
 #define THR_TYPE int
 
 static void *__thread_create(int (*func)(void *),void *arg)
 { pthread_t h;
   pthread_attr_t attr;
+  size_t stack_sz;
+
+  stack_sz = (PTHREAD_STACK_MIN > 64*1024) ? PTHREAD_STACK_MIN : 64*1024;
 
     if (pthread_attr_init(&attr)==0 &&
-       pthread_attr_setstacksize(&attr,64*1024)==0 &&
+       pthread_attr_setstacksize(&attr,stack_sz)==0 &&
        pthread_attr_setscope(&attr,PTHREAD_SCOPE_SYSTEM)==0 &&
        pthread_create(&h,&attr,(void *(*)(void *))func,arg)==0 )
        return (void *)h;



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to