I'm also encountering this bug with updated Ubuntu 14.04 but only on
32-bit installations.
I have another program to reproduce it, included below. This program
makes it to printing out OK on the 64-bit version.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/uio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <assert.h>
int main() {
struct iovec vec[1];
char* buf;
size_t buflen = 4096;
char* data = "aaaaaaaaaaaaaaaaaaaa";
int datalen = strlen(data);
int fd;
ssize_t got;
buf = malloc(buflen);
assert(buf);
vec[0].iov_base = buf;
vec[0].iov_len = buflen;
// open file
fd = open("tmp.data", O_RDWR | O_CREAT, S_IRWXU);
assert(fd>=0);
// copy data to buf
memset(buf, 0, buflen);
memcpy(buf, data, datalen);
vec[0].iov_base = buf;
vec[0].iov_len = datalen;
// write data
got = pwritev(fd, vec, 1, 0);
//got = pwrite(fd, buf, datalen, 0);
if( got == - 1 ) perror("in write");
assert(got == datalen);
// clear buf
memset(buf, 0, buflen);
// read data
vec[0].iov_base = buf;
vec[0].iov_len = buflen;
got = preadv(fd, vec, 1, 0);
//got = pread(fd, buf, buflen, 0);
if( got == - 1 ) perror("in read");
assert(got == datalen);
// check data
assert(0 == memcmp(data, buf, datalen));
close(fd);
unlink("tmp.data");
printf("OK\n");
return 0;
}
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1309818
Title:
pwritev() doesn't work anymore on i386
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1309818/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs