Solaris 10 /dev/poll bug

Solaris 10, at least on my T2000, seems to give me an EINVAL from the DP_POLL ioctl in a case where it shouldn't. The below example code should clarify:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>
#include <limits.h>
#include <sys/resource.h>
#include <sys/devpoll.h>
This program demonstrates what seems to be a bug in the /dev/poll interface
on Solaris 10 on our T2000. The man page says:
EINVAL The request or arg parameter is not valid
for this device, or field of the dvpoll
struct pointed by arg is not valid (for
example, dp_nfds is greater than
{OPEN_MAX}).
But in this case, we get EINVAL even though dp_nfds is not greater than
OPEN_MAX.
void fatal(const char *f)
fprintf(stderr, "Unable to show problem: %s\n", f);
exit(1);
int main(void)
struct rlimit r;
struct pollfd pfd[256];
struct dvpoll dp;
int i;
if(getrlimit(RLIMIT_NOFILE, &r)!=0) fatal("unable to get file limit");
if(r.rlim_cur!=256) fatal("set fd limit to 256");
if(OPEN_MAX!=256) fatal("OPEN_MAX must be 256");
i=open("/dev/poll", O_RDWR);
if(i<0) fatal("unable to open /dev/poll");
dp.dp_timeout=0;
dp.dp_nfds=256; /* Changing this to 255 fixes the problem */
dp.dp_fds=pfd;
if(ioctl(i, DP_POLL, &dp)==0) fatal("it does not appear on this system");
printf("errno=%d - Why?\n", errno);
Any ideas?

I ran into the same problem. /dev/poll is too smart for its own good here. You can't monitor your /dev/poll file descriptor using /dev/poll, so the actual maximum number of file descriptors you can monitor is OPEN_MAX - 1. Solaris enforces that limit.
This breaks other code out there too, e.g. the libevent library. Annoying even though it's arguably technically correct.

Similar Messages

  • Solaris8 and 9 (possibly 7) /dev/poll driver bug report.

    Hello,
    I'd like to report a bug in the solaris 8 and 9 /dev/poll driver (poll(7d)).
    As i do not have a support account with sun or anything like that, there
    seems to be no other way to do that here (which is of course a very sad
    thing).
    Bug details:
    The /dev/poll device provides an ioctl-request (DP_ISPOLLED) for checking
    if a particular filedescriptor is currently in the set of monitored
    filedescriptors for that particular /dev/poll fd set (open /dev/poll fd).
    A quote from the documentation of the poll(7d) manual page taken from
    Solaris9:
    "DP_ISPOLLED ioctl allows you to query if a file descriptor is already in
    the monitored set represented by fd. The fd field of the pollfd structure
    indicates the file descriptor of interest. The DP_ISPOLLED ioctl returns 1
    if the file descriptor is in the set. The events field contains the
    currently polled events. The revents field contains 0. The ioctl returns 0
    if the file descriptor is not in the set. The pollfd structure pointed by
    pfd is not modified. The ioctl returns a -1 if the call fails."
    It says that when you query for an filedescriptor which is currently being
    monitored in the set, that it would return 1, and change the events field of
    the pollfd structure to the events it's currently monitoring that fd for.
    The revents field would be set to zero.
    However the only thing which actually happens here, is that FD_ISPOLLED
    returns 1 when the fd is in the set and 0 if not. When the fd is in the
    set, when FD_ISPOLLED returns 1, the events field remains unmodified, but
    the revents field gets changed.
    A small sample code to illustrate:
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/devpoll.h>
    main() {
    struct pollfd a;
    int dp_fd = open("/dev/poll", O_WRONLY);
    a.fd = 0; /* stdin */
    a.events = POLLIN; /* we monitor for readability, POLLIN=1 */
    a.revents = 0;
    write(dp_fd, &a, sizeof(a));
    a.fd = 0;
    a.events = 34; /* filled in with bogus number to show malfunctioning */
    a.revents = 0;
    printf("DP_ISPOLLED returns: %d\n", ioctl(dp_fd, DP_ISPOLLED, &a));
    printf("a.fd=%d, a.events=%hd, a.revents=%hd\n", a.fd, a.events,
    a.revents);
    According to the documentation of /dev/poll and namely DP_ISPOLLED this
    program is supposed to print the following:
    DP_ISPOLLED returns: 1
    a.fd=0, a.events=1, a.revents=0
    However it prints the following:
    DP_ISPOLLED returns: 1
    a.fd=0, a.events=34, a.revents=1
    You can take any number instead of '34' and it will simply remain untouched
    after the DP_ISPOLLED ioctl-request.
    I hope it's clear now that the solaris8 and solaris9 (and probably solaris7
    with /dev/poll patch too) DP_ISPOLLED implementation is broken.
    This bug is also easily illustrated by looking at the solaris8 kernel sourcecode:
    <snippet osnet_volume/usr/src/uts/common/io/devpoll.c:dpioctl()>
    case DP_ISPOLLED:
    pollfd_t pollfd;
    polldat_t *pdp;
    if (pollfd.fd < 0) {
    mutex_exit(&pcp->pc_lock);
    break;
    pdp = pcache_lookup_fd(pcp, pollfd.fd);
    if ((pdp != NULL) && (pdp->pd_fd == pollfd.fd) &&
    (pdp->pd_fp != NULL)) {
    pollfd.revents = pdp->pd_events;
    if (copyout(&pollfd, (caddr_t)arg,
    sizeof(pollfd_t))) {
    mutex_exit(&pcp->pc_lock);
    DP_REFRELE(dpep);
    return (set_errno(EFAULT));
    *rvalp = 1;
    </snippet>
    its' clearly visible that the code writes the current monitored events to
    the revents field:
    'pollfd.revents = pdp->pd_events;'
    and that it doesnt set revents to zero.
    It's funny to see that this has been like this since Solaris8 (possibly 7). That means nobody ever used DP_ISPOLLED that way or people were simply to lazy to file a bug report.
    Another funny thing related to this. is that Hewlett-Packard did seem to know about this. Since HP-UX11i version 1.6 they also support /dev/poll. From their manual page i ll quote some sentences from their WARNING session:
    "The ioctl(DP_ISPOLLED) system call also returns its result in the revents member of the pollfd structure, in order to be compatible with the implementation of the /dev/poll driver by some other vendors."
    Hopefully this will get fixed.
    I also like to reexpress my very negative feelings towards the fact that you're not able to file bug reports when you do not have a support contract. Ridiculous.
    Thanks,
    bighawk

    Have I mentioned how much i love my playbook now Great job on os 2.0

  • Writing /dev/poll application in Solaris 8

    Hi all,
    I am trying to implement /dev/poll based polling in solaris 8 . I got the
    sample code form solaris 2.8 man pages for /dev/poll .
    I am able to compile the program but when I try to run it the ioctl
    call fails giving an error of "Invalid Argument" .
    What could be the reason for the ioctl faliure . Any help or pointers
    will be greatly appreciated.
    regards
    Rajesh K
    Section of the code .
    nt i=0 ,a=0,clen;
    int j=0,pret=0;
    struct sockaddr_in serv , cli ;
    struct pollfd pfd[2];
    /* struct dvpoll dopoll;
    dvpoll_t dopoll;
    int wfd;
    while(1)
    dopoll.dp_timeout = -1;
    dopoll.dp_nfds = 2;
    dopoll.dp_fds =pfd ;
    errno=0;
    if((pret = ioctl(wfd ,DP_POLL ,&dopoll)) < 0)
    perror("/dev/poll ioctl DP_POLL error");
    printf(" Errno = %d \n",errno);
    exit(0);
    }

    pfd is a array of pollfd structures and has been initialised to the
    file descriptors that has to be polled. The write to /dev/poll of that structure is also successful.
    It looks like that ioctl is not able to recogonise this device may have to configure its device number but how I dont know.

  • Solaris 10 on t1000 - write() to /dev/poll hangs on asm instrn

    hi,
    i've got a streaming server which uses /dev/poll and once in a while it hangs. upon debugging with dbx i found that sometimes it gets stuck inside the write() call to remove the fd from polled fd structure at the assembly instruction "ta 8" which is for a syscall, correct? and, sometimes it gets stuck inside sosendmsg() at "ta 8" too.
    this bug seems to reproduce intermittently only when the server is configured with 33 (the cpu has 32 coolthreads) worker pthreads each of which can add/remove fds from the poll device. each thread opens the /dev/poll seperately, so they have different fds to write to /dev/poll.
    the problem happens after all of the threads have started up, so it does not appear to be an issue with thread spawning. if the server is configured for lesser threads this behavior doesn't happen. i haven't increased the stress level on the server to say for certain that that is the case, but under the same load it doesn't happen.
    (1) the _write() call hang happens in the single thread that is responsible for handling all the incoming connections.
    (2) the sosendmsg() hang happens in any one of the 32 threads which handle all out-going data (streaming).
    hardware: t1000 with 8 cores (8G ram)
    compiler:s SUN C/C++ 5.8 2005/10/13
    application: helix server
    questions:
    (0) there is no need to lock the poll device even though mulltiple threads are writing to /dev/poll thru different fds, right?
    (1) is this a known bug?
    (2) how can i use dtrace (or any other tool) to probe beyond the syscall trap when the server hangs?
    here is the stack of the last frame in dbx for _write:
    0xff2412a4: _write       :      st       %o0, [%sp + 68]
    0xff2412a8: _write+0x0004:      mov      4, %g1
    => 0xff2412ac: _write+0x0008:      ta       8
    0xff2412b0: write+0x000c:      bcc,pt   %icc,write+0x20 ! 0xff2412c4
    0xff2412b4: _write+0x0010:      cmp      %o0, 91
    0xff2412b8: write+0x0014:      be,a,pn  %icc,write+0x4 ! 0xff2412a8
    0xff2412bc: _write+0x0018:      ld       [%sp + 68], %o0
    0xff2412c0: write+0x001c:      ba,a     cerror ! 0xff1a2380
    0xff2412c4: _write+0x0020:      retl    
    0xff2412c8: _write+0x0024:      nop     
    for sosendmsg:
    0xff240458: sosendmsg : st %o0, [%sp + 68]
    0xff24045c: sosendmsg+0x0004: mov 241, %g1
    0xff240460: sosendmsg+0x0008: ta 8
    => 0xff240464: sosendmsg+0x000c: bcc,pt %icc,_so_sendmsg+0x20 ! 0xff240478
    0xff240468: sosendmsg+0x0010: cmp %o0, 91
    0xff24046c: sosendmsg+0x0014: be,a,pn %icc,_so_sendmsg+0x4 ! 0xff24045c
    0xff240470: sosendmsg+0x0018: ld [%sp + 68], %o0
    0xff240474: sosendmsg+0x001c: ba,a _cerror        ! 0xff1a2380
    0xff240478: sosendmsg+0x0020: retl
    0xff24047c: sosendmsg+0x0024: nop
    any help is appreciated.
    sincerely,
    -atin

    hi,
    To look and see what the applications threads are doing once the application hangs
    as root run
    # mdb -k
    you should get a ">" prompt.
    then you could run..
    $<threadlist and look for your application process name amongst all the stack traces.
    or ::ps -t and find your process, that will list a load of kernel threads for your app.
    then you can do "threadpointer"::findstack for each of your threads eg
    here is ::ps output for vold
    R 342 1 342 342 0 0x4a014000 000006000987dbc0 vold
    T 0x300019c4cc0 <TS_SLEEP>
    T 0x300018ea380 <TS_SLEEP>
    T 0x300019dd960 <TS_SLEEP>
    T 0x30001152380 <TS_SLEEP>
    it has the 4 sleeping threads. lets see where they are stopped.
    0x300019c4cc0::findstackstack pointer for thread 300019c4cc0: 2a10116d061
    [ 000002a10116d061 cv_wait_sig_swap_core+0x11c() ]
    000002a10116d111 poll_common+0x4e8()
    000002a10116d201 pollsys+0xd8()
    000002a10116d2e1 syscall_trap32+0xcc()
    and so on for all four threads.
    that should give us an idea as to where in the devpoll code your thread is stopped
    but.. lets look at devpoll.c especially at where could dpwrite() block
    ah there is a comment saying that we wait for any other writers via dpwrite or any
    readers in dpioctl(), it keeps a reference count per fd that is opened into /dev/poll
    Is it possible that you have a thread in a longterm poll on the same fd as the blocking write, it looks like the write will block till the poll completes, pstack should give you the
    fd for each write/ioctl as the first argument.
    tim

  • Multithreaded behavior of new Solaris 8 /dev/poll

    When one thread is blocked in the ioctl for the /dev/poll device
    (to retrieve the fd's with events), a write from a different thread
    to add to the set appears to block indefinitely.
    I figured this ability (to add to the set from a different thread
    with no mutexing) was a great feature, but it looks like the
    write call blocks indefinitely. Before I invest in the unfortunate
    workaround, I wondered if anyone had dealt with this before.
    Thanks.

    I have not yet extracted a simple program, but the basics are:
    Thread one:
    fd1 = open()
    fd2 = open()
    fdp = open("/dev/poll"..)
    ioctl(fdp, DP_POLL, ...)
    Thread two (later):
    write(fdp, {struct with fd1, and POLLIN});
    ... much successful operation of the first thread receiving
    events from the ioctl, and properly "dispatching" them
    write(fdp, {struct fd1, and POLLREMOVE);
    It is this second write that hangs indefinitely.
    The only way I get it to NOT hang is by giving the
    ioctl(DP_POLL) in the first thread a timeout.
    When the ioctl returns due to timeout, the second thread that was hung in
    "write", finally returns.
    (my email is [email protected])
    Thanks for any ideas or help.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Solaris 9 x86 bug report - el_GR.ISO8859-7 & CDE

    I'm posting this article here, because I can't find any official Solaris 9 x86 bug report page. I hope the developers will notice it. I'm using Solaris 9 x86 (12/02), with the latest 9_x86_Recommended patch cluster installed, and support for Greek installed too.
    It seems there is some kind of problem, when trying to view text files with Greek (el_GR.ISO8859-7) characters, which were created under Windows. To be more specific:
    If I boot at CDE with language el_GR.ISO8859-7, and try to view a .txt file (just with a simple double click), which I have created under Windows, with Greek characters,
    the screen goes black, and the CDE login screen appears again (restarts). If I keep the Greek language or change the language to US English, I can boot at CDE again, with
    no problems. If I try "command line logging", the screen goes off - just like when the computer is powered off, and I can't do anything, (well, except pressing the reset button, that's the sure way). And if I use the "init 6" command, while being logged at CDE, from a terminal, the Graphical Desktop exits, and then, the screen goes off again (just like the computer is powered off), but finally the computer manages to restart.
    I'm using the Sun X server, NOT the XFree86 porting kit and I use the entry
    :0 Local local_uid@console nobody /usr/openwin/bin/Xsun :0 -dpsfileops
    in /usr/dt/config/Xservers file, to start the X server.
    Here is the $HOME_DIR/.dt/startlog file:
    --- ??? 23 ??? 2003 12:10:51
    --- /usr/dt/bin/Xsession starting...
    --- starting /usr/openwin/bin/speckeysd
    --- Xsession started by dtlogin
    --- starting /usr/dt/bin/dtsession_res -load -system
    --- sourcing /root/.dtprofile...
    --- sourcing /usr/dt/config/Xsession.d/0010.dtpaths...
    --- sourcing /usr/dt/config/Xsession.d/0015.sun.env...
    --- sourcing /usr/dt/config/Xsession.d/0020.dtims...
    --- sourcing /usr/dt/config/Xsession.d/0030.dttmpdir...
    --- sourcing /usr/dt/config/Xsession.d/0040.xmbind...
    --- sourcing /usr/dt/config/Xsession.d/1000.solregis...
    --- could not read /root/.profile
    --- starting /usr/dt/bin/dthello &
    --- starting /usr/dt/bin/dtsearchpath
    --- starting /usr/dt/bin/dtappgather &
    --- starting /usr/dt/bin/dsdm &
    --- session log file is /root/.dt/sessionlogs/www_DISPLAY=:0
    --- DTSOURCEPROFILE is 'true' (see /root/.dtprofile)
    --- execing /usr/dt/bin/dtsession with a /sbin/sh login shell ...
    --- starting desktop on /dev/pts/3
    Sun Microsystems Inc.     SunOS 5.9     Generic_112234-03     November 2002
    /usr/dt/bin/ttsession[337]: starting
    X connection to :0.0 broken (explicit kill or server shutdown).
    X connection to :0.0 broken (explicit kill or server shutdown).
    I don't know if this is a bug or something, and I'm very curious about the cause. I didn't have much time for any other "experiments".
    Anyway, I hope this will help developers solve a problem -if it really exists-.
    Angelos Vasilopoulos
    Site Security Officer
    [email protected]

    I'm posting this article here, because I can't find any official Solaris 9 x86 bug report page. I hope the developers will notice it. I'm using Solaris 9 x86 (12/02), with the latest 9_x86_Recommended patch cluster installed, and support for Greek installed too.
    It seems there is some kind of problem, when trying to view text files with Greek (el_GR.ISO8859-7) characters, which were created under Windows. To be more specific:
    If I boot at CDE with language el_GR.ISO8859-7, and try to view a .txt file (just with a simple double click), which I have created under Windows, with Greek characters,
    the screen goes black, and the CDE login screen appears again (restarts). If I keep the Greek language or change the language to US English, I can boot at CDE again, with
    no problems. If I try "command line logging", the screen goes off - just like when the computer is powered off, and I can't do anything, (well, except pressing the reset button, that's the sure way). And if I use the "init 6" command, while being logged at CDE, from a terminal, the Graphical Desktop exits, and then, the screen goes off again (just like the computer is powered off), but finally the computer manages to restart.
    I'm using the Sun X server, NOT the XFree86 porting kit and I use the entry
    :0 Local local_uid@console nobody /usr/openwin/bin/Xsun :0 -dpsfileops
    in /usr/dt/config/Xservers file, to start the X server.
    Here is the $HOME_DIR/.dt/startlog file:
    --- ??? 23 ??? 2003 12:10:51
    --- /usr/dt/bin/Xsession starting...
    --- starting /usr/openwin/bin/speckeysd
    --- Xsession started by dtlogin
    --- starting /usr/dt/bin/dtsession_res -load -system
    --- sourcing /root/.dtprofile...
    --- sourcing /usr/dt/config/Xsession.d/0010.dtpaths...
    --- sourcing /usr/dt/config/Xsession.d/0015.sun.env...
    --- sourcing /usr/dt/config/Xsession.d/0020.dtims...
    --- sourcing /usr/dt/config/Xsession.d/0030.dttmpdir...
    --- sourcing /usr/dt/config/Xsession.d/0040.xmbind...
    --- sourcing /usr/dt/config/Xsession.d/1000.solregis...
    --- could not read /root/.profile
    --- starting /usr/dt/bin/dthello &
    --- starting /usr/dt/bin/dtsearchpath
    --- starting /usr/dt/bin/dtappgather &
    --- starting /usr/dt/bin/dsdm &
    --- session log file is /root/.dt/sessionlogs/www_DISPLAY=:0
    --- DTSOURCEPROFILE is 'true' (see /root/.dtprofile)
    --- execing /usr/dt/bin/dtsession with a /sbin/sh login shell ...
    --- starting desktop on /dev/pts/3
    Sun Microsystems Inc.     SunOS 5.9     Generic_112234-03     November 2002
    /usr/dt/bin/ttsession[337]: starting
    X connection to :0.0 broken (explicit kill or server shutdown).
    X connection to :0.0 broken (explicit kill or server shutdown).
    I don't know if this is a bug or something, and I'm very curious about the cause. I didn't have much time for any other "experiments".
    Anyway, I hope this will help developers solve a problem -if it really exists-.
    Angelos Vasilopoulos
    Site Security Officer
    [email protected]

  • WebLogic 6.0 performance on Solaris (Excessive polling)

    We have a problem with SunOs 5.8, multi (2) CPU, 1GB memory Weblogic 6.0 sp1 and
    java 1.3.0.
    While running some benchmarks we realized that the tests run much faster (25%-40%
    faster) on a NT Pentium III 800 MHz desktop with 256MB RAM than on our Sun Ultra-250
    with the above configuration.
    So, we decided to do some profiling by turning on hprof (-X:runhprof:cpu=samples,depth=12)
    and realized that over 50% of the time is spent in polling the sockets (weblogic.socket.PosixSocketMuxer.poll).
    On NT, only 0.23% time is spent on the same activity. I do not know if on NT WebLogic
    uses a different IPC model (select vs. interrupt) but the time taken on Solaris
    doing polls is outrageous. I am wondering if anybody else out there has experienced
    the same problem? Any insights you have to share on this will be appreciated.
    TIA,
    -Anil Singhal

    The Xprof output is misleading - this does not mean that 50% of
    the CPU is spent on polling sockets. It simply means that 50% of the thread samples
    were in a polling method (probably waiting, not running).
    Yes, I believe that an 800MHz PIII would blow away an ES-250 which runs at less
    that 300MHz. So you have 2CPU -> 600MHz. Then
    (800-600)/800 = 25% which is what you get.
    Mike
    "Michael Girdley" <----> wrote:
    Are you using the performance pack? If not, you should.
    Michael Girdley
    BEA Systems
    Learning WebLogic? http://learnweblogic.com
    "Anil Singhal" <[email protected]> wrote in message
    news:3adc4f27$[email protected]..
    We have a problem with SunOs 5.8, multi (2) CPU, 1GB memory Weblogic6.0
    sp1 and
    java 1.3.0.
    While running some benchmarks we realized that the tests run much faster(25%-40%
    faster) on a NT Pentium III 800 MHz desktop with 256MB RAM than onour Sun
    Ultra-250
    with the above configuration.
    So, we decided to do some profiling by turning on hprof(-X:runhprof:cpu=samples,depth=12)
    and realized that over 50% of the time is spent in polling the sockets(weblogic.socket.PosixSocketMuxer.poll).
    On NT, only 0.23% time is spent on the same activity. I do not knowif on
    NT WebLogic
    uses a different IPC model (select vs. interrupt) but the time takenon
    Solaris
    doing polls is outrageous. I am wondering if anybody else out therehas
    experienced
    the same problem? Any insights you have to share on this will beappreciated.
    TIA,
    -Anil Singhal

  • Solaris 10 X86 bug at boot

    hi,
    I've got a serious trouble after installing the OS. the first time i boot on it (i've also got windows XP on my system, a packard bell laptop h5530), it writes me, at screen, something that looks like an html table, and for each tag say : class not found. I don't know if this is the same bug, but the first three times I've installed solaris i had a unable to find kernel/unix

    Just for the record: The problem is solved.
    I went on looking for more info on this message:
    Oct 14 00:07:09 schille gda: [ID 107833 kern.notice] Sense Key: ICRC error during UDMAAnd then found an interesting post from 2004 by Juergen Keil:
    The "bad block detected" message appears to be an old/obsolete error
    message text, somewhere in the Solaris "ata" driver.
    The ATA-1 standard (1997?) defined the 0x80 bit in the IDE
    controller's error register as "bad block detected". (See page 32 on
    <URL:http://www.t13.org/project/d0791r4c-ATA-1.pdf>)
    The 0x80 bit seems to be "reserved" (undefined, not used any more)
    with ATA-2 and ATA-3.
    ATA-4 and newer now defines this bit 0x80 as ICRC "interface CRC error
    has occurred during an Ultra DMA data transfer" when using ultra dma
    transfers. (see the description of the "READ DMA" or "WRITE DMA"
    command in <URL:http://www.t13.org/project/d1153r18-ATA-ATAPI-4.pdf>).
    The Solaris ata driver seems to interpret the 0x80 bit according to
    the old / obsolete 1997 ATA-1 standard.
    So the "bad block detected" message seems to be a hint that some sort
    of data corruption is happening on the IDE interface during UDMA data
    transfers with the HDD. With UDMA capable disks it apparently does
    not mean "the disk drive is dying".
    I went to search what could cause a hardware datacorruption on my system and found that my internal removeable disktray was making bad contact.
    After replacement everything worked as expected.

  • Solaris Dev 11 and Bind version

    I tried to load Sol 10 on IBM and it was no go, loaded 11 Dev no problem except I had to also add the Broadcom drivers to get the NICS up.
    I think that 10 and 11 use BIND 9, but I have been told that I must use BIND 8 for my project.
    Any info on how to go from BIND 9 to BIND 8 on Sol 11 Dev edition would be appreciated.
    Thanks

    OK, the reason we had to stay at 8 has to do with rrset fixed not working in 9, until now, evidently it is now working in BIND 9.4.1
    So I am using Solaris Express 11, it has BIND 9.3.4, I went to freesunware and got there pkgadd version of BIND 9.4.1, I did pkgadd and it placed a lot of files in /usr/local
    I checked named -v and 9.3.4 is running right now for nslookup type dns client functions (so the web surfing will work for example)
    I need to actually setup a DNS server, I did not try on 9.3.4 but it is on the machine by default.
    What do I now need to do to get 9.3.4 off this machine (or at least disabled) and to get 9.4.1 up and running on this machine.
    I have files from our other server that I am replacing like named.conf and a db that I will also be adding so I can get this thing ready to field and replace the old machine.
    But first, what do I do to disable the old BIND and get the new version in /usr/local up and running.
    Thanks

  • Xp/solaris dual boot bug

    Hello
    I have a 80gb hard disk set up with win xp pro along
    with a 25gb unformated partition. Recently I installed
    solaris 10 x86 to the 25gb partition from sun's
    website. the installation setup automatically selected
    the 25 gb space. all seemed to be working fine. the
    only problem was after installation solaris boot
    manager selected solaris automatically if no selection
    of win xp was made within 30 seconds. since i needed
    xp pro as a default i used the utility OSBS (boot.exe
    and osbs135). as instructed i have entered the saved
    solaris.bin from mbr to xp root and have entered
    corresponding entry in win.ini file. the new boot
    manager enables xp selection by default, xp pro boots
    all fine but if i select solaris nothing happens
    except a blinking cursor.
    It seems to me that solaris partition is all fine and
    healthy as I added few packages from solaris
    installation cd few days back. Only problem is i m
    unable to boot from it with the OSBS boot manager.
    Is this a known problem?? or is there any better boot
    manager?
    Any advice/suggestion will be highly appreciated.
    Many thanks

    Hi, I am not sure if this would work but it might. First of all do you know if you delete the solaris partition then wouldn't it go back to booting to Windows? Just wondering about that. Well anyways here is my proposed solution that enables booting Solaris from Windows XP boot menu. Actually wait do you have a floppy drive on your laptop or a portable one. Because this solution requires that. Reply if you have one.

  • Solaris 10 TCP bug?

    I have a palm M505 with a wireless lan jacket. The networking was fine with solaris 7,8 and 9 but fails under Solaris 10.
    Every now and again the tcp packets seem to get stuck in a loop. see snoop log. any ideas (It's definately related to Sol 10 as the same operation still works on earlier releases.
    using build 69 at moment.
    This repeats forever!
    Freshfields is the Sol10 box
    freshfields -> fresh-11 TCP D=43481 S=3128 Ack=2660256227 Seq=291580582 Len=0 Win=49312
    fresh-11 -> freshfields TCP D=3128 S=43481 Ack=291580658 Seq=2660256227 Len=0 Win=804
    freshfields -> fresh-11 TCP D=43481 S=3128 Ack=2660256227 Seq=291580582 Len=0 Win=49312
    fresh-11 -> freshfields TCP D=3128 S=43481 Ack=291580658 Seq=2660256227 Len=0 Win=804

    I have a palm M505 with a wireless lan jacket. The networking was fine with solaris 7,8 and 9 but fails under Solaris 10.
    Every now and again the tcp packets seem to get stuck in a loop. see snoop log. any ideas (It's definately related to Sol 10 as the same operation still works on earlier releases.
    using build 69 at moment.
    This repeats forever!
    Freshfields is the Sol10 box
    freshfields -> fresh-11 TCP D=43481 S=3128 Ack=2660256227 Seq=291580582 Len=0 Win=49312
    fresh-11 -> freshfields TCP D=3128 S=43481 Ack=291580658 Seq=2660256227 Len=0 Win=804
    freshfields -> fresh-11 TCP D=43481 S=3128 Ack=2660256227 Seq=291580582 Len=0 Win=49312
    fresh-11 -> freshfields TCP D=3128 S=43481 Ack=291580658 Seq=2660256227 Len=0 Win=804

  • /dev/poll with libevent problem Please help me!!!

    libevent compiled fine, but not worked.
    When i run "make verify" i got reply:
    cd ./test && make verify
    Running tests:
    KQUEUE
    Skipping test
    DEVPOLL
    test-eof: [warn] ioctl: DP_POLL: Invalid argument
    FAILED
    test-weof: [warn] ioctl: DP_POLL: Invalid argument
    FAILED
    test-time: [warn] ioctl: DP_POLL: Invalid argument
    FAILED
    regress: [warn] ioctl: DP_POLL: Invalid argument
    FAILED
    POLL
    test-eof: OKAY
    test-weof: OKAY
    test-time: OKAY
    regress: OKAY
    SELECT
    test-eof: OKAY
    test-weof: OKAY
    test-time: OKAY
    regress: OKAY
    RTSIG
    Skipping test
    EPOLL
    Skipping test
    Answer on uname -a
    SunOS gamesys01 5.10 Generic_118822-02 sun4u sparc SUNW,Sun-Fire-V490
    I am trying to compile libevent v1.0, v1.0c, v1.1, v1.1a with some effect. Please help me. Oua project did not work without memcached who using libevent. How can i solve this problem?

    I am already find cure for this problem. It is here: http://forum.sun.com/thread.jspa?forumID=272&threadID=26396

  • Patchset 8.1.7.1 doesn't address bug 1482140 re:EJB - Solaris

    I noticed that patchset 8.1.7.l was posted recently to Metalink. However, the JDeveloper Release Notes indicate that this patchset should include a fix for the bug thay prevents JDeveloper from deploying EJBs to Solaris (1482140). However the Patchset README indicates that this bug is not addressed. Furthermore, it indicates that no changes were made to JServer in this pathcset. Any idea from the JDev team when we may see these bugs addressed?

    Matt / Alla
    Re your posting ...
    the bug number we were talking about was 1482140, and your link points to for bug #1481972. It is the same?
    as you can imagine we've had a few "bugs" file on this issue !!
    Here is what i just verified :
    the howto/workaround entitled "Deploying Business Components as an EJB to Oracle 8.1.7 on Solaris" refers to Bug No. 1481972 can be found at :
    http://technet.oracle.com/docs/products/jdev/workarounds/jdev32/ejb817.html
    I just checked the internal system and saw that it is linked to the "Base Bug" 1482140 which is referred to in the jdev 3.2 release notes.
    you also asked :
    When iAS 1.0.2.1 is out?
    the best place to ask that question would be the "Oracle9i Application Server" forum located at :
    http://technet.oracle.com:89/cgi-bin/forumdisplay.cgi?action=topics&forum=Oracle9i+Application+Server&number=75&DaysPrune=20&LastLogin=
    it does get confusing -- doesn't it ??
    don
    null

  • Bind 9 DNS Server chroot cannot work on Solaris 10 u6 and u7

    My Old verion "Solaris 10 x86 Generic_Patch_118844-30" can be run "Bind 9 DNS Server" in chroot mode.
    And this is no any problem.
    I have been try to use "Bind 9 DNS Server" in Solairs 10 x86 u6 or u7.
    The result is not any problem.
    But when I turn it run in the chroot mode. the "Bind 9 DNS Server" cannot run.
    I have been manuelly run the named:-
    /usr/sbin/named -c /etc/named.conf -t /chroot/dns -u named -f -g
    The respond is :-
    13-May-2009 02:17:46.623 starting BIND 9.3.6-P1 -c /etc/named.conf -t /chroot/dns -u named -f -g
    13-May-2009 02:17:46.624 found 1 CPU, using 1 worker thread
    13-May-2009 02:17:46.627 socket.c:3259: unexpected error:
    13-May-2009 02:17:46.627 open(/dev/poll) failed: No such file or directory
    13-May-2009 02:17:46.628 ./main.c:495: unexpected error:
    13-May-2009 02:17:46.628 isc_socketmgr_create() failed: file not found
    13-May-2009 02:17:46.629 create_managers() failed: unexpected error
    13-May-2009 02:17:46.629 exiting (due to early fatal error)
    Look like the bind 9 runing in the chroot mode after that cannot find /dev/poll
    Even I use Bind 9 version 9.6.0, the result is same.
    So, I don't sure the problem are the Bind 9 or Solaris 10 u6/u7
    I try to continous install New verion Bind 9 in my old version Solaris 10.
    THE Result is NO ANY PROBLEM in old version Solaris 10.
    And I already bypass the SMF problem.
    Anyone can tell me what the problem in solaris 10 u6/u7?

    Looks like something reported similar bug:
    [BIND fails to start|http://bugs.opensolaris.org/view_bug.do%3Bjsessionid=376e1152f0ddc75829ed1725542e?bug_id=6799867]
    but I am somewhat puzzled why there is no follow up on the bug fixing.
    Ok, I found the source (may be?):
    From named:
    http://src.opensolaris.org/source/xref/sfw/usr/src/cmd/bind/bind-9.3.6-P1/bin/named/main.c
        462 static isc_result_t
        463 create_managers(void) {
        464      isc_result_t result;
        465      unsigned int socks;
        466
        467 #ifdef ISC_PLATFORM_USETHREADS
        468      if (ns_g_cpus == 0)
        469           ns_g_cpus = ns_g_cpus_detected;
        470      isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,
        471                 ISC_LOG_INFO, "found %u CPU%s, using %u worker thread%s",
        472                 ns_g_cpus_detected, ns_g_cpus_detected == 1 ? "" : "s",
        473                 ns_g_cpus, ns_g_cpus == 1 ? "" : "s");
        474 #else
        475      ns_g_cpus = 1;
        476 #endif
        477      result = isc_taskmgr_create(ns_g_mctx, ns_g_cpus, 0, &ns_g_taskmgr);
        478      if (result != ISC_R_SUCCESS) {
        479           UNEXPECTED_ERROR(__FILE__, __LINE__,
        480                      "isc_taskmgr_create() failed: %s",
        481                      isc_result_totext(result));
        482           return (ISC_R_UNEXPECTED);
        483      }
        484
        485      result = isc_timermgr_create(ns_g_mctx, &ns_g_timermgr);
        486      if (result != ISC_R_SUCCESS) {
        487           UNEXPECTED_ERROR(__FILE__, __LINE__,
        488                      "isc_timermgr_create() failed: %s",
        489                      isc_result_totext(result));
        490           return (ISC_R_UNEXPECTED);
        491      }
        492
        493      result = isc_socketmgr_create2(ns_g_mctx, &ns_g_socketmgr, maxsocks);===========================> here. (notice the error message and the actual function called are not the same).
        494      if (result != ISC_R_SUCCESS) {
        495           UNEXPECTED_ERROR(__FILE__, __LINE__,
        496                      "isc_socketmgr_create() failed: %s",
        497                      isc_result_totext(result));
        498           return (ISC_R_UNEXPECTED);
        499      }
        500      result = isc_socketmgr_getmaxsockets(ns_g_socketmgr, &socks);
        501      if (result == ISC_R_SUCCESS) {
        502           isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
        503                      NS_LOGMODULE_SERVER,
        504                      ISC_LOG_INFO, "using up to %u sockets", socks);
        505      }
        506
        507      result = isc_entropy_create(ns_g_mctx, &ns_g_entropy);
        508      if (result != ISC_R_SUCCESS) {
        509           UNEXPECTED_ERROR(__FILE__, __LINE__,
        510                      "isc_entropy_create() failed: %s",
        511                      isc_result_totext(result));
        512           return (ISC_R_UNEXPECTED);
        513      }
        514
        515      result = isc_hash_create(ns_g_mctx, ns_g_entropy, DNS_NAME_MAXWIRE);
        516      if (result != ISC_R_SUCCESS) {
        517           UNEXPECTED_ERROR(__FILE__, __LINE__,
        518                      "isc_hash_create() failed: %s",
        519                      isc_result_totext(result));
        520           return (ISC_R_UNEXPECTED);
        521      }
        522
        523      return (ISC_R_SUCCESS);
        524 }And in isc_socketmgr_create2():
       3384 isc_result_t
       3385 isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
       3386                 unsigned int maxsocks)
       3387 {
    <SNIP>
       3488
       3489      /*
       3490       * Set up initial state for the select loop
       3491       */
       3492      result = setup_watcher(mctx, manager);===============================>will call open() on /dev/poll.
       3493      if (result != ISC_R_SUCCESS)
       3494           goto cleanup;
       3495      memset(manager->fdstate, 0, manager->maxsocks * sizeof(int));
    Other the above, I cannot really understand or help further. But I know it should fail in somewhere in setup_watcher() in socket.c.

  • Solaris 8 installed-no printer or internet access??

    I have installed Solaris 8 OS on intel architecture and finally it works---except for printer and internet access. I found the add printer window but don't know what port it's on??? How do I get printer to work(canon bjc2100)Also have installed network card since S8 OS installation but can't access internet----how please???
    Thank you in advance for any help you can give.

    The parallel port should be something like <tt>/dev/lp1</tt> (old
    device name), or
    <tt>/dev/printers/0</tt> (newer device name, I think this appeared
    when solaris 8 started to support USB printers). Do you see such
    devices on your system?
    If these devices do not exist:
    Interrupt the boot process with ESC to enter the "Device
    configuration assistant" (DCA), do you see the parallel port listed in the hardware list on the second screen?
    If the parallel port hardware is listed in the DCA, continue booting,
    and boot with the kernel with the "-r" flag. The "-r" performs a
    "reconfiguration boot" and the /dev/lp* or /dev/printers/* devices
    should be created.
    If the printer port is listed in the DCA hardware list,
    and the reconfiguration boot did <b>not</b> create the unix
    printer devices, and the command <tt>prtconf -Dv | grep lp</tt>
    does not print <tt>lp (driver name: lp)</tt>, you may be running
    into the solaris 8 ACPI bug (bug id 4344312). This bug results in
    non-working on board hardware when using certain combinations of
    main boards and bios versions; often seen on boards using VIA
    south bridge chipsets. In that case have a look at http://www.tools.de/solaris/via/ for a possible solution.

Maybe you are looking for