Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Aug 2001 22:37:51 +0100 (BST)
From:      Nick Hibma <n_hibma@FreeBSD.ORG>
To:        Mikhail Teterin <mi@aldan.algebra.com>
Cc:        <current@freebsd.org>
Subject:   Re: another panic (mix ppp and usb to taste)
Message-ID:  <20010830223344.I618-100000@heather.plazza.uk>
In-Reply-To: <200108241807.f7OI7Vd00967@aldan.algebra.com>

next in thread | previous in thread | raw e-mail | index | archive | help

What you are doing doesn't work for sure. You are piping in and out of
the control enpoint which won't work. Perhaps

	/usr/sbin/ppp -quiet -direct -nat <> /dev/ugen0.1

would work, if there is an endpoint 1-in and an endpoint 1-out and they
are both related to data transfer. Normally this is  not the case. See
the 3Com 5605 modem.

USB is NOT a serial protocol. It has nothing in common with a serial
port.

Nick

P.S.: The reason why it crashes is that it looks for an endpoint
descriptor for endpoint 0 which doesn't exist. i'll fix that.


On Fri, 24 Aug 2001, Mikhail Teterin wrote:

> As I was trying to let the Palm Pilot connect to my desktop
> through usb using PPP, I tried to run
>
> 	/usr/sbin/ppp -quiet -direct -nat < /dev/ugen0
>
> While, perhaps, not the right way to do what I want (what is? aren't
> serial devices the simplest?), it should not panic (nothing should
> really). But it does, and quite repeatedly (some more comments after
> the trace):
>
> IdlePTD 4984832
> initial pcb at 3db040
> panicstr: bwrite: buffer is not busy???
> panic messages:
> ---
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; lapic.id = 01000000
> fault virtual address   = 0x3
> fault code              = supervisor read, page not present
> instruction pointer     = 0x8:0xc01d5a0b
> stack pointer           = 0x10:0xce7f1c4c
> frame pointer           = 0x10:0xce7f1c58
> code segment            = base 0x0, limit 0xfffff, type 0x1b
>                         = DPL 0, pres 1, def32 1, gran 1
> processor eflags        = interrupt enabled, resume, IOPL = 0
> current process         = 442 (ppp)
> trap number             = 12
> panic: page fault
> cpuid = 0; lapic.id = 01000000
> boot() called on cpu#0
>
> syncing disks... panic: bwrite: buffer is not busy???
> cpuid = 0; lapic.id = 01000000
> boot() called on cpu#0
> Uptime: 10m14s
>
> dumping to dev da0b, offset 131200
> dump ....... 2 1 0
> ---
> [...]
> #12 0xc030b0bc in trap (frame={tf_fs = -1071644648, tf_es = -830734320,
>       tf_ds = 16777232, tf_edi = 64, tf_esi = 0, tf_ebp = -830530472,
>       tf_isp = -830530504, tf_ebx = -1049243648, tf_edx = -1049243428,
>       tf_ecx = 34, tf_eax = 0, tf_trapno = 12, tf_err = 0,
>       tf_eip = -1071818229, tf_cs = 8, tf_eflags = 66178,
>       tf_esp = -830530412, tf_ss = -1049288448})
>     at ../../../i386/i386/trap.c:405
> #13 0xc01d5a0b in ugenpoll (dev=0xc1752100, events=64, p=0xce7abb80)
>     at ../../../dev/usb/ugen.c:1369
> #14 0xc01ed604 in spec_poll (ap=0xce7f1c94)
>     at ../../../fs/specfs/spec_vnops.c:333
> #15 0xc01ed27d in spec_vnoperate (ap=0xce7f1c94)
>     at ../../../fs/specfs/spec_vnops.c:119
> #16 0xc0252333 in vn_poll (fp=0xc17328c0, events=64, cred=0xc1734700,
>     p=0xce7abb80) at vnode_if.h:381
> #17 0xc0228b8b in selscan (p=0xce7abb80, ibits=0xce7f1d48,
>     obits=0xce7f1d3c, nfd=1) at ../../../sys/file.h:192
> #18 0xc02286b5 in select (p=0xce7abb80, uap=0xce7f1f80)
>     at ../../../kern/sys_generic.c:772
> #19 0xc030bf2d in syscall (frame={tf_fs = 47, tf_es = 47, tf_ds = 47,
>       tf_edi = 134842880, tf_esi = 134842880, tf_ebp = 0,
>       tf_isp = -830529580, tf_ebx = 3, tf_edx = 134996480,
>       tf_ecx = 134996352, tf_eax = 93, tf_trapno = 12, tf_err = 2,
>       tf_eip = 673178596, tf_cs = 31, tf_eflags = 643,
>       tf_esp = -1077937708, tf_ss = 47}) at ../../../i386/i386/trap.c:1129
> (kgdb) up 13
> #13 0xc01d5a0b in ugenpoll (dev=0xc1752100, events=64, p=0xce7abb80)
>     at ../../../dev/usb/ugen.c:1369
> 1369            switch (sce->edesc->bmAttributes & UE_XFERTYPE) {
> (kgdb) p sce
> $1 = (struct ugen_endpoint *) 0x0
> (kgdb) l
> 1364                    printf("ugenpoll: no pipe\n");
> 1365                    return (EIO);
> 1366            }
> 1367    #endif
> 1368            s = splusb();
> 1369            switch (sce->edesc->bmAttributes & UE_XFERTYPE) {
> 1370            case UE_INTERRUPT:
> 1371                    if (events & (POLLIN | POLLRDNORM)) {
> 1372                            if (sce->q.c_cc > 0)
> 1373                                    revents |= events & (POLLIN | POLLRDNORM);
> (kgdb) p events
> $3 = 64
> (kgdb) p s
> No symbol "s" in current context.
> (kgdb) p revents
> $5 = 0
>
> What I don't understand, is -- there is a check, just a few lines
> above:
>         if (sce == NULL)
>                 return (EINVAL);
>
> How come it is not being caught there? Thanks,
>
> --
>                          |\__-----__/|
>                     _____/ :::::  :::\_____
>                    '__--( ::::::::..::)--__`	-mi
> If you have a      /  _- \/  :::::::\/ -_
> serious knowledge    /   / :.   .::::\   \
> about computers --      | ::::::::::::|  	Ok, let's say you broke
> keep it in a secret!   _|/ ::::____::\|_	the wall with your head
> "Rules of dating",   /  /:::::/:_::\::\:.\      What are you going to
> 'Playboy', ? 1994   | :|  ..:(_/ \::|::|::|	do in the next cell?
>                     | :|:::::. ::|: |::|.:|	      Stanislaw J. Lec
>                      \ |::  :::_/::/: :|:/
>                    ((___\____\____/___/___))
>


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010830223344.I618-100000>