Known Bugs and Surprises in Parrot

Parrot is a powerful tool. for attaching new distributed storage systems to existing applications. We use Parrot daily on a number of machines, and it is a useful and reliable tool in many settings. Like any software, Parrot has some bugs and surprises. We can't guarantee Parrot will be perfect, but we will attempt to document its shortcomings so that you know what you are getting. Discussion of bugs and surprises is more than welcome on parrot-discuss.

A bug is some failure of Parrot to live up to its promises. We will attempt to fix bugs as time and resources permit. However, the cure is sometimes worse than the sickness, so some bugs live on. A surprise is any effect of Parrot that is necessary but not obvious.

Known Bugs

  1. Symptom: Terminal programs such as xterm, konsole, and rxvt complain "Warning: no access to tty." Parrot does not currently track the association of programs with controlling terminals, sometimes called ttys. Workaround: Instead of typing parrot xterm, just type xterm and then parrot tcsh
  2. Symptom: Typing ctrl-D does not terminate the shell. This is anoyther symptom of the preceding problem. Workaround: Type exit instead.

Known Surprises

  1. Symptom: "PFS cannot execute the program XYZ because it is setuid" A few UNIX programs rely on the setuid feature in order to become the superuser and take some administrative action. For security reasons, the underlying operating system prevents Parrot from working with such programs.

  2. Symptom: FTP directories are incomplete. With some FTP servers, you will find that Parrot only shows directory entries that correspond to plain files. Directories and other special files are missing. Why is this?

    Short answer: Your FTP server is broken. The NLST command ought to return a list of everything in a directory, not just the files. Ask your system operator to modify this behavior by changing a configuration option or editing the code. Failing that, make use of another protocol, such as Chirp, to get reliable directory listings. (One server that gets this behavior correct is (GridFTP Server 1.0 [GSI patch v0.5] wu-2.6.1(2)).)

    Short fix for wu-ftpd: If you have wuftpd, rebuild from source with the --enable-nlst-dirs option to configure.

    Long answer:The precise behavior of file listings is a matter of dispute in the FTP community. Here's why:

    The FTP specification offers two ways of retrieving a directory list. The LIST command is designed for human consumption: it gives back a free-form text dump of the directory contents in a manner that differs from server to server. The NLST command is meant for machines: it gives plain names and no other information. With some FTP clients, you can see the output of LIST by typing "ls" and the output of NLST by typing "nlist".

    Parrot relies on the NLST command to retrieve directory listings in order to implement the getdents() system call. This would be fine, except some FTP servers mistakenly implement NLST such that it lists everything except directories. The LIST command is not a usable alternative, because its output has no standard form.

    Two arguments have been made in favor of this NLST behavior.

    1. Argument 1: The FTP standard mandates it.
    2. Argument 2: This behavior is necessary for a multiple get to be implemented correctly.

    Both of these arguments are hogwash. As for argument 1, the RFC uses the term file throughout the document to indicate something in the filesystem rather than strictly an array of bytes. Read it yourself and decide.

    Argument 2 is no better. Suppose that NLST included directory names. One could easily build a multiple get that (if desired) skipped over directory names by using CWD and CDUP to determine which entries, if any, are directory names. Further, one could trivially build a recursive multiple get. But, with a files-only NLST, one is limited to a flat multiple get; a recursive multiple get is not even possible!

    To summarize: the NLST command is implemented incorrectly on many servers. If you have this problem, ask your system administrators to change the server, or make use of another protocol such as Chirp.


Condor Project Home Page
Parrot Home Page