Hi All,

I am crossposting to networking-discuss and tools-compilers because I am not sure if this is a compiler issue or a bug in the rpc module:

While chasing another issue related to the RPC connection manager, I noticed that on my x64 development box, tuning rpcmod:clnt_max_conns had no effect. Irrespective of which value I set it to, the RPC client would only open one connection. I could not observe this issue on a Solaris8 SPARC machine.

This issue kept me busy for a day (me questioning my understanding of the code), until I finally inspected the assembler code of the function in question. Here's an annotated piece of code (from connmgr_get in uts/common/rpc/clnt_cots.c), disassembled with mdb:

   1863                 /*
   1864                  * If we are at the maximum number of connections to
   1865                  * the server, hand back the least recently used one.
   1866                  */
   1867                 if (i == clnt_max_conns) {

connmgr_get+0x2c4:              cmpl   $0x1,%ebx
connmgr_get+0x2c7:              jle    +0xbe    <connmgr_get+0x38b>

Apparently, the compiler has optimized

    463 #define CLNT_MAX_CONNS  1       /* concurrent connections between 
clnt/srvr */
    464 static int clnt_max_conns = CLNT_MAX_CONNS;

into a constant value of 1 for clnt_max_conns.

When I recompiled rpcmod with clnt_max_conns declared as int (without static), the issue was fixed, and assembler code looked OK:

connmgr_get+0x2c4:              movl   +0x47dae5e(%rip),%eax    <clnt_max_conns>
connmgr_get+0x2ca:              cmpl   %eax,%ebx
connmgr_get+0x2cc:              jle    +0xbe    <connmgr_get+0x390>


My question is: Is this a compiler issue or a genuine bug?

Due to various other constraints, I used my antique snv_98 onnv bldenv with spro 11 (cc: Sun C 5.8 Patch 121016-05 2007/01/10).

Any pointers are highly appreciated. If this is not a compiler bug, I'd open a bug and prepare a webrev with the fix. If this issue is fixed with current compilers, I apologize for the noise.

Cheers,

Nils
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to