ports/165787: port/dvdisaster dumps core on RELENG_9/amd64

C. P. Ghost cpghost at cordula.ws
Tue Mar 6 19:40:15 UTC 2012


>Number:         165787
>Category:       ports
>Synopsis:       port/dvdisaster dumps core on RELENG_9/amd64
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Mar 06 19:40:14 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     C. P. Ghost
>Release:        FreeBSD 9.0-STABLE/amd64
>Organization:
Cordula's Web
>Environment:
FreeBSD phenom.cordula.ws 9.0-STABLE FreeBSD 9.0-STABLE #0 r232305: Wed Feb 29 17:52:38 CET 2012     root at phenom.cordula.ws:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
The port sysutils/dvdisaster dumps core on RELENG_9 (it didn't on RELENG_8).
>How-To-Repeat:
Run dvdisaster without options, and watch it crash immediately before
even showing the GUI.
>Fix:
Attached is a patch that temporarily disables the code which causes the coredump.
Use at your own risk: I don't know what ramifications this would have in
practice. With this kludge, dvdisaster works again on my system.

Maybe the patch should be conditioned on the FreeBSD version, so that it
only works on RELENG_9 (and later)? I suspect changes in the CAM layer
API/ABI to be responsible for the breakage.

This is only a temporary workaround, until upstream fixes the problem.

Put the attached patch file in /usr/ports/sysutils/dvdisaster/files
and rebuild/reinstall the port.

Patch attached with submission follows:

--- scsi-freebsd.c.orig	2012-03-06 20:08:13.000000000 +0100
+++ scsi-freebsd.c	2012-03-06 20:10:52.000000000 +0100
@@ -194,7 +194,14 @@
 
    /* Extract sense data */
 
+   /*
+    * The following memcpy() smashes the stack of scsi-layer:InquireDevice()
+    * when called on FreeBSD amd64 RELENG_9.  Commenting it out, until the
+    * real reason has been found.  -- cpghost at cordula.ws
+    */
+#if 0
    memcpy(sense, &(ccb->csio.sense_data), sizeof(struct scsi_sense_data));
+#endif
 
    if((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)
      return 0;


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list