OT: WAS: relink ELF souboru

Roman Divacky rdivacky at freebsd.org
Mon Jun 18 15:28:03 CEST 2007


> 	Treba Java. Mam tu binar (zdrojaky nejsou), ktery na Woknech chodi, na 
> Linuxu taky, na FreeBSD+JVM 1.5.0 nechodi. Spojuje se to TCP kamsi na 
> nejaky server a rekne mi to, ze spojeni nelze navazat. Pricemz vim, ze 
> se ve skutecnosti ani nepokusil (tcpdump), ale zresolveni jmena se mu 
> korektne povedlo (option debug v resolv.conf). Uvnitr aplikace to 
> havaruje na volani 'new Socket(InetAddress address, int port)' 
> (disassembler) - nastane IOException, chyba EINVAL. S trochou stesti 

sockety v BSD a Linuxu maji trosku jinou semantiku, nevim o solarisu ale
myslim ze vsecky sysV derivaty to tak maji.

takze muj nazor je ten ze v te jave je to napojeni JVM<->OS pro sockety delane
tak ze to sysV sezere, zatimco na bsd to vrati EINVAL.

ja se s necim podobnym setkal u sendmsg kde linuxovy ping predava tudle strukturu:

struct msghdr {
        void            *msg_name;              /* optional address */
        socklen_t        msg_namelen;           /* size of address */
        struct iovec    *msg_iov;               /* scatter/gather array */
        int              msg_iovlen;            /* # elements in msg_iov */
        void            *msg_control;           /* ancillary data, see below */
        socklen_t        msg_controllen;        /* ancillary data buffer len */
        int              msg_flags;             /* flags on received message */
};

tak ze msg_control je NULL a msg_controllen je nenulove, moc to nedava smysl a 
myslim ze todle standardy moc neresi takze je to zavisle na implementace, a BSD
byva tradicne striktnejsi nez linux aspol.

takze bych to videl spis na chybu v JDK nez v te javove aplikaci, ale jak jsem rekl
tohle jsou ciste spekulace na urovni "cernovlaska vs. blondyna"

just my 2 cents ;)

roman

p.s. zitra mi drzte palce, mam statnice :)




More information about the Users-l mailing list