[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#752237: marked as done (libc0.3: send() asked to transmit 0 chars still triggers recv() on Hurd)



Your message dated Sun, 09 Nov 2014 11:21:42 +0000
with message-id <E1XnQYw-0005gY-8X@franck.debian.org>
and subject line Bug#752237: fixed in hurd 1:0.5.git20141108-1
has caused the Debian Bug report #752237,
regarding libc0.3: send() asked to transmit 0 chars still triggers recv() on Hurd
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
752237: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=752237
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: libc0.3
Version: 2.19-3
Severity: normal
X-Debbugs-CC: debian-hurd@lists.debian.org

Dear Maintainer,

it seems send() on Hurd doesn't work like it does everywhere else.

Attached is a simple test case.
To reproduce the problem, execute make in a folder with the attached client.c, server.c and Makefile.
Then run ./server, open another terminal and run ./client.

The usual output is:
$ ./server
Message: 'TEST'

$ ./client
Socket works.
Answer: 'ANSWER'

But on Hurd one gets:
$ ./server
Message: ''

$ ./client
Socket works.
Answer: 'ANSWER'

This is because the client is calling:
	send(sockfd, "", 0, 0)

Normally this doesn't trigger recv() in the server and thus can be used to test, whether the socket is working. But on Hurd it actually sends an empty message, so that the real message, which is sent later, is not received.

As a workaround, one can comment out this test, which is done in the server, so that the ANSWER reaches the client.

This should be handled on Hurd in the same way as on other platforms.

I noticed this bug, because it breaks the communication between clamd and clamdscan on Hurd, thus leading to test failures and ultimately a FTBFS.

Best regards,
Andreas


-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: hurd-i386 (i686-AT386)

Kernel: GNU-Mach 1.4-486/Hurd-0.5
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash

Versions of packages libc0.3 depends on:
ii  hurd-libs0.3  1:0.5.git20140526-2
ii  libgcc1       1:4.9.0-7

Versions of packages libc0.3 recommends:
pn  libc0.3-i686  <none>

Versions of packages libc0.3 suggests:
ii  debconf [debconf-2.0]  1.5.53
pn  glibc-doc              <none>
#include <errno.h>
#include <stdio.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/unistd.h>

char sock_name[] = "TEST.ctl";

int connect_socket()
{
	struct sockaddr_un server;
	int sockfd;

	memset(&server, 0, sizeof(server));
	server.sun_family = AF_UNIX;
	strncpy(server.sun_path, sock_name, sizeof(server.sun_path));
	server.sun_path[sizeof(server.sun_path) - 1] = '\0';

	sockfd = socket(AF_UNIX, SOCK_STREAM, 0);

	if (sockfd < 0) {
		printf("Can't create socket %s: %s\n", sock_name, strerror(errno));
		return -1;
	}

	if (connect(sockfd, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) {
		printf("Can't connect to socket %s: %s\n", sock_name, strerror(errno));
		close(sockfd);
		return -2;
	}

	return sockfd;
}

int main()
{
	char buff[20];
	int sockfd = connect_socket();
	if (sockfd < 0) {
		return sockfd;
	}

	if (send(sockfd, "", 0, 0) < 0) {
		printf("Socket not working: %s\n", strerror(errno));
	} else {
		printf("Socket works.\n");
	}

	if (send(sockfd, "TEST", 4, 0) < 0) {
		printf("Could not write to socket: %s\n", strerror(errno));
		close(sockfd);
		return 1;
	}

	memset(buff, 0, sizeof (buff));
	if (recv(sockfd, buff, sizeof (buff), 0) < 0) {
		printf("Error receiving answer: %s\n", strerror(errno));
		close(sockfd);
		return 2;
	}
	printf("Answer: '%s'\n", buff);
	close(sockfd);
	return 0;
}
#! /usr/bin/make -f

CC ?= gcc
CFLAGS ?= -g -pedantic -Wall -Wextra

all: server client
	

%:
	$(CC) $(CFLAGS) $@.c -o $@
#include <errno.h>
#include <stdio.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/unistd.h>

char sock_name[] = "TEST.ctl";

int create_socket()
{
	struct sockaddr_un server;
	int sockfd;

	memset(&server, 0, sizeof(server));
	server.sun_family = AF_UNIX;
	strncpy(server.sun_path, sock_name, sizeof(server.sun_path));
	server.sun_path[sizeof(server.sun_path) - 1] = '\0';

	sockfd = socket(AF_UNIX, SOCK_STREAM, 0);

	if (sockfd < 0) {
		printf("Can't create socket %s: %s\n", sock_name, strerror(errno));
		return -1;
	}

	if (bind(sockfd, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) {
		printf("Socket file %s could not be bound: %s\n", server.sun_path, strerror(errno));
		close(sockfd);
		return -2;
	}

	if (listen(sockfd, 20) < 0) {
		printf("listen() error: %s\n", strerror(errno));
		close(sockfd);
		return -3;
	}

	return sockfd;
}

int main()
{
	int ret, con;
	char buff[20];
	int sockfd = create_socket();
	if (sockfd < 0) {
		return sockfd;
	}

	con = accept(sockfd, 0, 0);

	memset(buff, 0, sizeof(buff));
	if (recv(con, buff, sizeof (buff), 0) >= 0) {
		printf("Message: '%s'\n", buff);
	}
/*
	if (write(con, "", 0) < 0) {
		printf("Socket not working: %s\n", strerror(errno));
		return 1;
	} else {
		printf("Socket works.\n");
	}
 */
	if (write(con, "ANSWER", 6) < 0) {
		printf("Could not write to socket: %s\n", strerror(errno));
		ret = 2;
	}

	close(con);

	if (unlink(sock_name) == -1) {
		printf("Socket file %s could not be removed: %s\n", sock_name, strerror(errno));
		ret = 3;
	}
	close(sockfd);
	return ret;
}

--- End Message ---
--- Begin Message ---
Source: hurd
Source-Version: 1:0.5.git20141108-1

We believe that the bug you reported is fixed in the latest version of
hurd, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 752237@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Samuel Thibault <sthibault@debian.org> (supplier of updated hurd package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Sun, 09 Nov 2014 02:22:38 +0000
Source: hurd
Binary: hurd-libs0.3 hurd hurd-dev hurd-dbg hurd-doc hurd-libs0.3-udeb hurd-udeb
Architecture: source hurd-i386 all
Version: 1:0.5.git20141108-1
Distribution: unstable
Urgency: medium
Maintainer: GNU Hurd Maintainers <debian-hurd@lists.debian.org>
Changed-By: Samuel Thibault <sthibault@debian.org>
Description:
 hurd       - GNU Hurd
 hurd-dbg   - GNU Hurd (debugging files)
 hurd-dev   - GNU Hurd (development files)
 hurd-doc   - GNU Hurd manual
 hurd-libs0.3 - GNU Hurd (libraries)
 hurd-libs0.3-udeb - GNU Hurd (libraries) - udeb (udeb)
 hurd-udeb  - GNU Hurd - udeb (udeb)
Closes: 752237
Changes:
 hurd (1:0.5.git20141108-1) unstable; urgency=medium
 .
   * New upstream snapshot.
     - Fix random translator crash during heimdal testsuite.
     - patches/newRPC.patch: Update.
     - patches/git-R-protected-payloads.patch: Revert upstream commit, breaks
       mach-defpager startup.
     - Closes: #752237
Checksums-Sha1:
 7547ada5d4186bc028e3c8980d84b9d1d566cb5c 4996 hurd_0.5.git20141108-1.dsc
 b4af03311984b25c2fe1bfce971e7d043c0ff2be 5013 hurd_0.5.git20141108.orig-devnode.tar.bz2
 d8a6ede167c993127a2ab41b480ab99a8b948f1c 18087 hurd_0.5.git20141108.orig-eth-filter.tar.bz2
 81b8299c1d649e3783eac86b6545e703161fdc57 16710 hurd_0.5.git20141108.orig-eth-multiplexer.tar.bz2
 721729550de2632761aa18a83ea7f6ab77d8e9ab 10442 hurd_0.5.git20141108.orig-libbpf.tar.bz2
 68023c1e003d0df0805d160883be17cb82a9c815 3331744 hurd_0.5.git20141108.orig-libdde-linux26.tar.bz2
 aee8a0844ee66cda6da5378dd6d08ccd52c73fff 20120 hurd_0.5.git20141108.orig-libddekit.tar.bz2
 c31651ca858fdd2fd6f8e9fc7e4adef7bad20e0a 6814 hurd_0.5.git20141108.orig-libhurd-slab.tar.bz2
 c080e7a6747dab7ac4f5e7ecab6883de56df6aac 22456 hurd_0.5.git20141108.orig-libmachdev.tar.bz2
 c073a296eece8e7d6605fd7d164832ee392241f1 2009753 hurd_0.5.git20141108.orig.tar.bz2
 92e2e60b971f23bc7f21810e77fdbff4c805ca99 105395 hurd_0.5.git20141108-1.debian.tar.bz2
 993eda8d1828b16b7e150e62f43e6be7c18961b6 262082 hurd-libs0.3_0.5.git20141108-1_hurd-i386.deb
 7d8b6720fef64e323081b40e4847aa3e61799173 1406680 hurd_0.5.git20141108-1_hurd-i386.deb
 a48a5e3b61297f8684bf1926571ace5c620c2cb7 3176362 hurd-dev_0.5.git20141108-1_hurd-i386.deb
 215b783f1eb78a6dd23383dee99a34cf13177a61 3127478 hurd-dbg_0.5.git20141108-1_hurd-i386.deb
 57472720edb155de4ac99b14dba0e7807d396a39 164196 hurd-doc_0.5.git20141108-1_all.deb
 a1e472009c88b8a301d9d86b8e432b442551d108 240464 hurd-libs0.3-udeb_0.5.git20141108-1_hurd-i386.udeb
 2293dbea8a27b3ff3bae0443d509c4d7653b9b94 1430612 hurd-udeb_0.5.git20141108-1_hurd-i386.udeb
Checksums-Sha256:
 65da494aad0a9cfffe36b14ff62652f834df385c29157d8020b00c2d48463cae 4996 hurd_0.5.git20141108-1.dsc
 18fdfbf158baf6e8339a64dd8a8c1f6fe5a8306a2fd8ed54006741050896cddb 5013 hurd_0.5.git20141108.orig-devnode.tar.bz2
 3c933031646ca85057b63d3c11c4fdd5183df438d6b64c01df80edd21feb2acd 18087 hurd_0.5.git20141108.orig-eth-filter.tar.bz2
 e055f7cea2c982c722d134c79c6d8174b4eda384d2c2ce4b2440951b6c5a3ca3 16710 hurd_0.5.git20141108.orig-eth-multiplexer.tar.bz2
 f7c5fb2f465ee79f04977acbbd46a5774f24a0e3abf35d0f8991ee77829372ce 10442 hurd_0.5.git20141108.orig-libbpf.tar.bz2
 92fa729b77b457eef0cbe6e6817c27853e4522a4ed2ce8242c4e01bb6892221e 3331744 hurd_0.5.git20141108.orig-libdde-linux26.tar.bz2
 f95eb42c17c2cd833f615b73b6d739b4e23bbe9bbcd1783b116acd2932d889c4 20120 hurd_0.5.git20141108.orig-libddekit.tar.bz2
 c845d642d39c087a6877cb1705388da31042bccb9b5346ea33251eaa4f4fe4f9 6814 hurd_0.5.git20141108.orig-libhurd-slab.tar.bz2
 a5210678b858c2504ceb71385b2415e8bb4501e87e7d841386d603ab0c8f4b90 22456 hurd_0.5.git20141108.orig-libmachdev.tar.bz2
 bca9b1bef191c82509c93bfe036c31f10f6c5c1e2b19677c871e5eb14ed38e98 2009753 hurd_0.5.git20141108.orig.tar.bz2
 17daad24896c6425557c9593e6755887a1635c1331ba8381bc5c949d0a13549e 105395 hurd_0.5.git20141108-1.debian.tar.bz2
 99ceb6e585422e127596beec6bb642606bdc05d8ebbf92a572728cf39f0c10e3 262082 hurd-libs0.3_0.5.git20141108-1_hurd-i386.deb
 ea75c9fb5b43f3a8709c6a4ac8964d339126695d299de9a2f3bda33611ec35f3 1406680 hurd_0.5.git20141108-1_hurd-i386.deb
 2b2fde8312e4dc19631b5fb917f83f5188ed646ab05ef0c7a206b945e89f986c 3176362 hurd-dev_0.5.git20141108-1_hurd-i386.deb
 477130c744f2362957a9aeb2c4aee1831c0b7f63f4a663f69e34b59ee5845db3 3127478 hurd-dbg_0.5.git20141108-1_hurd-i386.deb
 938988d43a32890536f4052d86c6196efafd157ddb852332be20b3d5db8faa4d 164196 hurd-doc_0.5.git20141108-1_all.deb
 16c2cc2da6c3b7917e25f74bba14eaf9aafedea2c328f03c28698d11aa4f7c20 240464 hurd-libs0.3-udeb_0.5.git20141108-1_hurd-i386.udeb
 5bde2d51dc7c529d604fc63947ab5eddc82ad2a4b58b9bf39baf9e753e940604 1430612 hurd-udeb_0.5.git20141108-1_hurd-i386.udeb
Files:
 88abfb2cdb70920ecdf9b53db3a7b361 4996 admin required hurd_0.5.git20141108-1.dsc
 c64b0c1ba3da283995461c076f8c3c61 5013 admin required hurd_0.5.git20141108.orig-devnode.tar.bz2
 b9c32dc1306e784a302a8cd1f8c804f3 18087 admin required hurd_0.5.git20141108.orig-eth-filter.tar.bz2
 d4dedf80b2db7626c013ec1bc6f5db0c 16710 admin required hurd_0.5.git20141108.orig-eth-multiplexer.tar.bz2
 61e7ad5b07a409981a7c11480b416a99 10442 admin required hurd_0.5.git20141108.orig-libbpf.tar.bz2
 45c24133ac80fa08c2392b2184239196 3331744 admin required hurd_0.5.git20141108.orig-libdde-linux26.tar.bz2
 a19e5983d2a85583a16347bb13f1abf5 20120 admin required hurd_0.5.git20141108.orig-libddekit.tar.bz2
 707ab09d02f77fbc503a51d61d5aa249 6814 admin required hurd_0.5.git20141108.orig-libhurd-slab.tar.bz2
 b16687b87864453a24c675ca8639c96a 22456 admin required hurd_0.5.git20141108.orig-libmachdev.tar.bz2
 55f7949b92f97bc55b01a40363a51dfb 2009753 admin required hurd_0.5.git20141108.orig.tar.bz2
 5f001b5346f555953b67149fb079e1d3 105395 admin required hurd_0.5.git20141108-1.debian.tar.bz2
 1d4b923e422ec5d1972e1cc598d51227 262082 libs required hurd-libs0.3_0.5.git20141108-1_hurd-i386.deb
 8b89e01469bdb281463a29e0beae1ae4 1406680 admin required hurd_0.5.git20141108-1_hurd-i386.deb
 9c96ee9d5f74cc20a1fc8592cf410c02 3176362 libdevel standard hurd-dev_0.5.git20141108-1_hurd-i386.deb
 d826fb1643138cb28ff28e9cc808a3fb 3127478 debug extra hurd-dbg_0.5.git20141108-1_hurd-i386.deb
 aadacb2c0e1c37ab5d9a0d6e6b203415 164196 doc optional hurd-doc_0.5.git20141108-1_all.deb
 e545d64a4317040380d653d149a9f4e4 240464 debian-installer optional hurd-libs0.3-udeb_0.5.git20141108-1_hurd-i386.udeb
 0bf15bc2d7588d1c1a22cd85a750d1cd 1430612 debian-installer optional hurd-udeb_0.5.git20141108-1_hurd-i386.udeb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBCgAGBQJUX0H6AAoJEBH0lP5vGG7NeaoQAJugpYLHqgnsUBDDnEPhRKEB
2+uZurPDE5ln5H+yJQnn1oGsyahFdgS6BTN45Yp3pEmy1pBgd+CH01CdhsTrnkAr
F64vZFdLl9HxeP3s1Hb6Ljajs1jOHx/F+nsFgP5UXVaXY7WoG4Mbf0bXAaIXRRYV
67nvwk7kNM5CdSIBndEPKe+EXcP9oRS+rkD4yblWTLlYjNmBQOAa3qX0wvWLK1/Z
lFI6ECU8m2jj1lFVna+Mt6HlUXqelrRZN05WRS6MatL1mFPgQQ4nnMvl4FSy3pBs
Y0k5i0AZ8xkToelRrgLqPbNo8lUebLS/LdlxsPXwB8I4QlcwMZ7jED0stB/UNVBH
ZF/QBoYoWjl4GQf+KcwN7t1WOvNWEzFbgSQRuL00Dak/8fwOsATsmu2wCH2zoQT3
W6UCAnzE8wpZ+juEvSe5Szp+b4CCM//uuY9QIU5r82syxk9XUoBEc88UuOtmFLhE
yqV8/ISGaSO0K95nZsvvYqlJ11aJ+7ADhgRxcZR8PIF9a/aOg93FGXbrKajfU3bp
rD4bAIVWWBvR2VHwiPt6BkkBaVJA31GdAM+dboV2GahR7BMoUjj9O+9eaU1ztg+n
cRb2FTIz7ezeDZQSuLEnE4b74t9Hr8MDgwshAow4oc+46Ao8l0NTb9aSgS/zGwg7
b34w1fVAzghA76vgaNj8
=sQMa
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: