March 01, 2011 [Issue 5677] New: Calling Socket.select with a timeval hangs using -m64 on linux | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=5677 Summary: Calling Socket.select with a timeval hangs using -m64 on linux Product: D Version: D2 Platform: x86_64 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nobody@puremagic.com ReportedBy: benshiflet@gmail.com --- Comment #0 from benshiflet@gmail.com 2011-03-01 11:50:22 PST --- Calling Socket.select with a timeval hangs using -m64 on linux (Ubuntu 10.10), but works fine with -m32 (I'm using DMD 2.052). To reproduce, save the following lines to a file (bug.d): import std.stdio, std.socket; void main(string[] args) { writeln("About to call select..."); Socket.select(null, null, null, 2_000_000); // 2s writeln("Select has returned."); } The following correctly returns after 2s: dmd -m32 bug.d && ./bug But the following hangs: dmd -m64 bug.d && ./bug Using strace shows the issue: dmd -m32 bug.d && strace ./bug prints: select(0, NULL, NULL, NULL, {2, 0}) dmd -m64 bug.d && strace ./bug prints: select(0, NULL, NULL, NULL, {2, 140733585617248} Speculation: I believe this happens because std/socket.d defines 'struct timeval' as two ints, whereas druntime/src/core/sys/posix/sys/time.d defines it as (time_t, suseconds_t). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation