Package: advi Version: 1.6.0-13+b2 Severity: normal When trying to open the attached .dvi file (generated by processing the attached tex file with LaTeX) advi freezes (does not answer to commands, but does not take 100% of the CPU either). xdvi displays it fine.
The state during the freeze seems to be that advi launches a gs that waits for input (blocks on "read(0, ...)" while advi itselfs loops on: --- SIGALRM (Alarm clock) @ 0 (0) --- rt_sigprocmask(SIG_BLOCK, [ALRM], [PIPE ALRM], 8) = 0 read(3, 0x20326d4, 4096) = -1 EAGAIN (Resource temporarily unavailable) read(3, 0x20326d4, 4096) = -1 EAGAIN (Resource temporarily unavailable) setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 249999}}, {it_interval={0, 0}, it_value={0, 0}}) = 0 setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 249938}}, {it_interval={0, 0}, it_value={0, 249940}}) = 0 rt_sigreturn(0x2) = -1 EINTR (Interrupted system call) read(6, 0x203ac40, 4096) = ? ERESTARTSYS (To be restarted) --- SIGALRM (Alarm clock) @ 0 (0) --- Here are the open files: advi 6936 lionelm 0u CHR 136,2 4 /dev/pts/2 advi 6936 lionelm 1u CHR 136,2 4 /dev/pts/2 advi 6936 lionelm 2u CHR 136,2 4 /dev/pts/2 advi 6936 lionelm 3u unix 0xffff81001b30b940 93665 socket advi 6936 lionelm 4r FIFO 0,6 93667 pipe advi 6936 lionelm 5w FIFO 0,6 93667 pipe advi 6936 lionelm 6r FIFO 0,6 93668 pipe advi 6936 lionelm 7w FIFO 0,6 93668 pipe gs 6939 lionelm 0r FIFO 0,6 93667 pipe gs 6939 lionelm 1w FIFO 0,6 93668 pipe gs 6939 lionelm 2u CHR 136,2 4 /dev/pts/2 gs 6939 lionelm 4u unix 0xffff81001b381180 93681 socket gs 6939 lionelm 5w FIFO 0,6 93667 pipe gs 6939 lionelm 6r FIFO 0,6 93668 pipe (This, by the way, suggests that advi fails to close fd 5 and 6, the pipe it has set up to communicate with gs, before exec()'ing gs. This in turn leads to gs surviving advi: it does not get SIGPIPE because there is a program (itself) that has the same pipe open for writing so the kernel has hope that the read(0, ...) may ever return. advi probably uses the open_proc / open_process in the OCaml stdlib, which if I remember well has this fd leak bug (or lack of feature or however you want to call that); I use the following in my own code: (* Adapted from unix.ml in ocaml stdlib: * * Copyright 1996 Institut National de Recherche en Informatique et * en Automatique. *) let try_set_close_on_exec fd = try Unix.set_close_on_exec fd; true with Invalid_argument _ -> false let open_proc_sane cmd args (*proc*) input output error toclose = let cloexec = List.for_all try_set_close_on_exec toclose in match Unix.fork() with 0 -> Unix.dup2 input Unix.stdin; Unix.close input; Unix.dup2 output Unix.stdout; Unix.close output; Unix.dup2 error Unix.stderr; Unix.close error; if not cloexec then List.iter Unix.close toclose; begin try Unix.execvp cmd args with _ -> exit 127 end | id -> id;; let open_process_sane cmd args = let (in_read, in_write) = Unix.pipe() in let (out_read, out_write) = Unix.pipe() in let (err_read, err_write) = Unix.pipe() in let outchan = Unix.out_channel_of_descr in_write in let inchan = Unix.in_channel_of_descr out_read in let errchan = Unix.in_channel_of_descr err_read in let cpid=open_proc_sane cmd args in_read out_write err_write [in_write; out_read; err_read] in Unix.close in_read; Unix.close out_write; Unix.close err_write; (cpid, (outchan,in_write), (inchan, out_read), (errchan,err_read));; ) -- System Information: Debian Release: 5.0 APT prefers unstable APT policy: (500, 'unstable'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.26-1-amd64 (SMP w/2 CPU cores) Locale: LANG=fr_LU.UTF-8, LC_CTYPE=fr_LU.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages advi depends on: ii ghostscript-x [gs] 8.62.dfsg.1-3.2lenny0 The GPL Ghostscript PostScript/PDF ii libc6 2.7-18 GNU C Library: Shared libraries ii libfreetype6 2.3.7-2 FreeType 2 font engine, shared lib ii libgif4 4.1.6-6 library for GIF images (library) ii libice6 2:1.0.4-1 X11 Inter-Client Exchange library ii libjpeg62 6b-14 The Independent JPEG Group's JPEG ii libpng12-0 1.2.27-2 PNG library - runtime ii libsm6 2:1.0.3-2 X11 Session Management library ii libtiff4 3.8.2-11 Tag Image File Format (TIFF) libra ii libx11-6 2:1.1.5-2 X11 client-side library ii libxext6 2:1.0.4-1 X11 miscellaneous extension librar ii libxinerama1 2:1.0.3-2 X11 Xinerama extension library ii libxpm4 1:3.5.7-1 X11 pixmap library ii texlive-base 2007.dfsg.1-5 TeX Live: Essential programs and f ii texlive-base-bin 2007.dfsg.2-4 TeX Live: Essential binaries ii zlib1g 1:1.2.3.3.dfsg-12 compression library - runtime advi recommends no packages. Versions of packages advi suggests: ii bzip2 1.0.5-1 high-quality block-sorting file co ii ttf-kochi-gothic 1.0.20030809-8 Kochi Subst Gothic Japanese TrueTy ii ttf-kochi-mincho 1.0.20030809-8 Kochi Subst Mincho Japanese TrueTy -- no debconf information
\documentclass{article} \usepackage{qtree} \begin{document} \leaf{a} \leaf{b} \branch{2}{c} \qobitree \end{document}
foo.dvi
Description: TeX dvi file