July 11, 2015
win7   x86  dmd2.067.1 ok
ubuntu x64  dmd2.067.1 error
-------------------------------------
import std.stdio;
import std.socket;

extern(C)
void recv()
{
    writeln("recv...");
}

extern(C)
void send()
{
    writeln("send...");
}


int main(string[] argv)
{
    //copy from std.socket unittest

    immutable ubyte[] data = [1, 2, 3, 4];
    auto pair = socketPair();
    scope(exit) foreach (s; pair) s.close();

    pair[0].send(data);

    auto buf = new ubyte[data.length];
    pair[1].receive(buf);
    assert(buf == data);

    return 0;
}
----------------------------------
send...
recv...
core.exception.AssertError@a.d(27): Assertion failure
----------------
./a() [0x43d61f]
./a(_Dmain+0xcc) [0x43d1bc]
./a(_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv+0x1f) [0x4400fb]
./a(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x2a) [0x44004e]
./a(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()+0x30) [0x4400b4]
./a(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x2a) [0x44004e]
./a(_d_run_main+0x1dc) [0x43ffc8]
./a(main+0x17) [0x43d637]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f5fabd8fec5]

July 11, 2015
On Saturday, 11 July 2015 at 01:22:14 UTC, mzfhhhh wrote:
> win7   x86  dmd2.067.1 ok
> ubuntu x64  dmd2.067.1 error
> -------------------------------------
> import std.stdio;
> import std.socket;
>
> extern(C)
> void recv()
> {
>     writeln("recv...");
> }
>
> extern(C)
> void send()
> {
>     writeln("send...");
> }
>
>
> int main(string[] argv)
> {
>     //copy from std.socket unittest
>
>     immutable ubyte[] data = [1, 2, 3, 4];
>     auto pair = socketPair();
>     scope(exit) foreach (s; pair) s.close();
>
>     pair[0].send(data);
>
>     auto buf = new ubyte[data.length];
>     pair[1].receive(buf);
>     assert(buf == data);
>
>     return 0;
> }
> ----------------------------------
> send...
> recv...
> core.exception.AssertError@a.d(27): Assertion failure
> ----------------
> ./a() [0x43d61f]
> ./a(_Dmain+0xcc) [0x43d1bc]
> ./a(_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv+0x1f) [0x4400fb]
> ./a(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x2a) [0x44004e]
> ./a(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()+0x30) [0x4400b4]
> ./a(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x2a) [0x44004e]
> ./a(_d_run_main+0x1dc) [0x43ffc8]
> ./a(main+0x17) [0x43d637]
> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f5fabd8fec5]

You basically "overwrite" the C send(2) and recv(2) functions with your code (the actual symbols, the linker will yours instead the "real" ones). So std.socket doesn't call the C functions but yours. Yours obviously don't send and receive data. If you really want to "overwrite" these functions you might be able to call the original ones via dlsym.