Hi,
dpkg in Debian woody (3.0) is broken by recent linux kernels;
due to the following command changing behavior (mmap of
zero-byte length):
addr=mmap(NULL, 0, PROT_READ, MAP_SHARED, fd, 0);
These bugs are caused by mmap changing behavior;
it used to return NULL when given a length of 0.
However, it now returns -1, and gives back an errno=EINVAL.
This triggers problems in Debian installation.
The workaround is to give some content to the files:
/var/lib/status
/var/lib/available
$ uname -r
2.6.14-rc3dancer-gedb4a353
$ ./a.c b
a.c: In function 'main':
a.c:26: warning: comparison between pointer and integer
mmap: Invalid argument
$ ls -l b
-rw-r--r-- 1 dancer dancer 0 2005-10-09 22:29 b
$ uname -r
2.2.26
$ cat a.c
/*BINFMTC:
* */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/mman.h>
int main(int argc, char **argv)
{
int fd;
void*addr;
if (argc < 2)
{
fprintf(stderr, "Filename required\n");
return 1;
}
if((fd=open(argv[1], O_RDONLY))==-1)
{
perror("open");
return 1;
}
addr=mmap(NULL, 0, PROT_READ, MAP_SHARED, fd, 0);
if (addr==-1)
{
perror("mmap");
return 1;
}
printf ("%p\n", addr);
if(close(fd)==-1)
{
perror("close");
return 1;
}
return 0;
}
$ ./a.out b
(nil)
regards,
junichi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]