Fatal Signal 10 in PPP

I’ve heard stories of this failure under other operating systems, but
haven’t found a reliable fix, so I figured I’d appeal to the collective
wisdom of the group. I’m running QNX 6.1 on an ARM processor with a
read-only flash drive that has nfs mounts in a few places where I need
writeable access. I connect to a phone using a custom serial port driver,
dial a GPRS connection, and run pppd on the open connection. pppd
establishes the connection, swaps IP addresses and such, and then prints
“Fatal Signal 10” and gracefully exits. A repeat dial and execution of pppd
will succeed at that point, but the problem is rather disturbing. Since this
has been reported for NetBSD, SPARC, and early versions of Linux (the
problem seems to be an OS buffer overflow with too many interfaces), I was
hoping that this problem might be known and, preferably, solved in QNX. Can
anybody point me to a solution? Thanks in advance.

  • Matt Katinas

Signal 10 is SIGBUS. On ARM this usually means an unaligned access. You
can check this theory by building your QNX boot image with the -ae option
to procnto. This turns on support for unaligned accesses. This is slow
and does not always fix the problem so it is not considered a general purpose
solution. But if your problem goes away with this option set, then it is a
bug in pppd that needs to be corrected. Might already be fixed in 6.2.0.

chris


Matt Katinas <mkatinasSPAMBLOCK@logikos.spamblock.com> wrote:

I’ve heard stories of this failure under other operating systems, but
haven’t found a reliable fix, so I figured I’d appeal to the collective
wisdom of the group. I’m running QNX 6.1 on an ARM processor with a
read-only flash drive that has nfs mounts in a few places where I need
writeable access. I connect to a phone using a custom serial port driver,
dial a GPRS connection, and run pppd on the open connection. pppd
establishes the connection, swaps IP addresses and such, and then prints
“Fatal Signal 10” and gracefully exits. A repeat dial and execution of pppd
will succeed at that point, but the problem is rather disturbing. Since this
has been reported for NetBSD, SPARC, and early versions of Linux (the
problem seems to be an OS buffer overflow with too many interfaces), I was
hoping that this problem might be known and, preferably, solved in QNX. Can
anybody point me to a solution? Thanks in advance.

  • Matt Katinas


Chris McKillop <cdm@qnx.com> “The faster I go, the behinder I get.”
Software Engineer, QSSL – Lewis Carroll –
http://qnx.wox.org/

There is “post 6.1” pppd fixes, used to post on qdn.qnx.com,
(somewhere/fixes :slight_smile: But I am not sure where it is now.

-xtang

Chris McKillop <cdm@qnx.com> wrote:

Signal 10 is SIGBUS. On ARM this usually means an unaligned access. You
can check this theory by building your QNX boot image with the -ae option
to procnto. This turns on support for unaligned accesses. This is slow
and does not always fix the problem so it is not considered a general purpose
solution. But if your problem goes away with this option set, then it is a
bug in pppd that needs to be corrected. Might already be fixed in 6.2.0.

chris



Matt Katinas <> mkatinasSPAMBLOCK@logikos.spamblock.com> > wrote:
I’ve heard stories of this failure under other operating systems, but
haven’t found a reliable fix, so I figured I’d appeal to the collective
wisdom of the group. I’m running QNX 6.1 on an ARM processor with a
read-only flash drive that has nfs mounts in a few places where I need
writeable access. I connect to a phone using a custom serial port driver,
dial a GPRS connection, and run pppd on the open connection. pppd
establishes the connection, swaps IP addresses and such, and then prints
“Fatal Signal 10” and gracefully exits. A repeat dial and execution of pppd
will succeed at that point, but the problem is rather disturbing. Since this
has been reported for NetBSD, SPARC, and early versions of Linux (the
problem seems to be an OS buffer overflow with too many interfaces), I was
hoping that this problem might be known and, preferably, solved in QNX. Can
anybody point me to a solution? Thanks in advance.

  • Matt Katinas

http://developers.qnx.com , click on fixes.

Cheers,
Adam

QNX Software Systems Ltd.
[ amallory@qnx.com ]

With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <pschon@baste.magibox.net>

Xiaodan Tang <xtang@qnx.com> wrote in message
news:ao78i2$1uc$1@nntp.qnx.com

There is “post 6.1” pppd fixes, used to post on qdn.qnx.com,
(somewhere/fixes > :slight_smile: > But I am not sure where it is now.

-xtang

Chris McKillop <> cdm@qnx.com> > wrote:
Signal 10 is SIGBUS. On ARM this usually means an unaligned access.
You
can check this theory by building your QNX boot image with the -ae
option
to procnto. This turns on support for unaligned accesses. This is slow
and does not always fix the problem so it is not considered a general
purpose
solution. But if your problem goes away with this option set, then it
is a
bug in pppd that needs to be corrected. Might already be fixed in
6.2.0.

chris


Matt Katinas <> mkatinasSPAMBLOCK@logikos.spamblock.com> > wrote:
I’ve heard stories of this failure under other operating systems, but
haven’t found a reliable fix, so I figured I’d appeal to the collective
wisdom of the group. I’m running QNX 6.1 on an ARM processor with a
read-only flash drive that has nfs mounts in a few places where I need
writeable access. I connect to a phone using a custom serial port
driver,
dial a GPRS connection, and run pppd on the open connection. pppd
establishes the connection, swaps IP addresses and such, and then
prints
“Fatal Signal 10” and gracefully exits. A repeat dial and execution of
pppd
will succeed at that point, but the problem is rather disturbing. Since
this
has been reported for NetBSD, SPARC, and early versions of Linux (the
problem seems to be an OS buffer overflow with too many interfaces), I
was
hoping that this problem might be known and, preferably, solved in QNX.
Can
anybody point me to a solution? Thanks in advance.

  • Matt Katinas

I downloaded the “fixed” pppd-armle version, but when I tried to run it, I
got the message

ioctl(PPPIOCGUNIT): Inappropriate I/O control operation

What version of QNX is the fix for? Do I need a different library, or is
this a problem with my custom serial driver not supporting the operation?

  • Matt Katinas

“Adam Mallory” <amallory@qnx.com> wrote in message
news:ao7b5i$4ci$1@nntp.qnx.com

http://developers.qnx.com > , click on fixes.

Cheers,
Adam

QNX Software Systems Ltd.
[ > amallory@qnx.com > ]

With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <> pschon@baste.magibox.net

Xiaodan Tang <> xtang@qnx.com> > wrote in message
news:ao78i2$1uc$> 1@nntp.qnx.com> …
There is “post 6.1” pppd fixes, used to post on qdn.qnx.com,
(somewhere/fixes > :slight_smile: > But I am not sure where it is now.

-xtang

Chris McKillop <> cdm@qnx.com> > wrote:
Signal 10 is SIGBUS. On ARM this usually means an unaligned access.
You
can check this theory by building your QNX boot image with the -ae
option
to procnto. This turns on support for unaligned accesses. This is
slow
and does not always fix the problem so it is not considered a general
purpose
solution. But if your problem goes away with this option set, then it
is a
bug in pppd that needs to be corrected. Might already be fixed in
6.2.0.

chris


Matt Katinas <> mkatinasSPAMBLOCK@logikos.spamblock.com> > wrote:
I’ve heard stories of this failure under other operating systems, but
haven’t found a reliable fix, so I figured I’d appeal to the
collective
wisdom of the group. I’m running QNX 6.1 on an ARM processor with a
read-only flash drive that has nfs mounts in a few places where I
need
writeable access. I connect to a phone using a custom serial port
driver,
dial a GPRS connection, and run pppd on the open connection. pppd
establishes the connection, swaps IP addresses and such, and then
prints
“Fatal Signal 10” and gracefully exits. A repeat dial and execution
of
pppd
will succeed at that point, but the problem is rather disturbing.
Since
this
has been reported for NetBSD, SPARC, and early versions of Linux (the
problem seems to be an OS buffer overflow with too many interfaces),
I
was
hoping that this problem might be known and, preferably, solved in
QNX.
Can
anybody point me to a solution? Thanks in advance.

  • Matt Katinas

    \

Matt Katinas <mkatinasSPAMBLOCK@logikos.spamblock.com> wrote:

I downloaded the “fixed” pppd-armle version, but when I tried to run it, I
got the message

ioctl(PPPIOCGUNIT): Inappropriate I/O control operation

What version of QNX is the fix for? Do I need a different library, or is
this a problem with my custom serial driver not supporting the operation?

I believe the pppd is for 6.1A, make sure you are using 6.1A
npm-pppmgr.so, that error sounds like your npm-pppmgr.so is
not from 6.1A (try pkgctl /lib/dll/npm-pppmgr.so)

As for your own serial driver, as long as it support read/write, it
should fine, though it will be helpful to support readcond().

Any reason you can’t upgrade to 6.2 ?

-xtang


  • Matt Katinas

“Adam Mallory” <> amallory@qnx.com> > wrote in message
news:ao7b5i$4ci$> 1@nntp.qnx.com> …

http://developers.qnx.com > , click on fixes.

Cheers,
Adam

QNX Software Systems Ltd.
[ > amallory@qnx.com > ]

With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <> pschon@baste.magibox.net

Xiaodan Tang <> xtang@qnx.com> > wrote in message
news:ao78i2$1uc$> 1@nntp.qnx.com> …
There is “post 6.1” pppd fixes, used to post on qdn.qnx.com,
(somewhere/fixes > :slight_smile: > But I am not sure where it is now.

-xtang

Chris McKillop <> cdm@qnx.com> > wrote:
Signal 10 is SIGBUS. On ARM this usually means an unaligned access.
You
can check this theory by building your QNX boot image with the -ae
option
to procnto. This turns on support for unaligned accesses. This is
slow
and does not always fix the problem so it is not considered a general
purpose
solution. But if your problem goes away with this option set, then it
is a
bug in pppd that needs to be corrected. Might already be fixed in
6.2.0.

chris


Matt Katinas <> mkatinasSPAMBLOCK@logikos.spamblock.com> > wrote:
I’ve heard stories of this failure under other operating systems, but
haven’t found a reliable fix, so I figured I’d appeal to the
collective
wisdom of the group. I’m running QNX 6.1 on an ARM processor with a
read-only flash drive that has nfs mounts in a few places where I
need
writeable access. I connect to a phone using a custom serial port
driver,
dial a GPRS connection, and run pppd on the open connection. pppd
establishes the connection, swaps IP addresses and such, and then
prints
“Fatal Signal 10” and gracefully exits. A repeat dial and execution
of
pppd
will succeed at that point, but the problem is rather disturbing.
Since
this
has been reported for NetBSD, SPARC, and early versions of Linux (the
problem seems to be an OS buffer overflow with too many interfaces),
I
was
hoping that this problem might be known and, preferably, solved in
QNX.
Can
anybody point me to a solution? Thanks in advance.

  • Matt Katinas

    \

“Xiaodan Tang” <xtang@qnx.com> wrote in message
news:ao7tkk$f17$1@nntp.qnx.com

Matt Katinas <> mkatinasSPAMBLOCK@logikos.spamblock.com> > wrote:
I believe the pppd is for 6.1A, make sure you are using 6.1A
npm-pppmgr.so, that error sounds like your npm-pppmgr.so is
not from 6.1A (try pkgctl /lib/dll/npm-pppmgr.so)

Any chance you could point me to the 6.1A version, in case that’s not the
one I’m using?

As for your own serial driver, as long as it support read/write, it
should fine, though it will be helpful to support readcond().

It does support readcond(), actually. We figured that would be important.

Any reason you can’t upgrade to 6.2 ?

Limited time. We’ve already tested most of the system on 6.1, and upgrading
to 6.2 might be more trouble than it’s worth at this point. But we’re
keeping the option open.

Thanks for the help!

  • Matt Katinas