Bug 749455 - pptpcm crashes with segfault sometimes
Summary: pptpcm crashes with segfault sometimes
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: pptp
Version: 16
Hardware: i686
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Paul Howarth
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-10-27 05:37 UTC by Michael Weidner
Modified: 2013-02-14 09:25 UTC (History)
3 users (show)

Fixed In Version: pptp-1.7.2-14.fc16
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-02-14 02:55:39 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Michael Weidner 2011-10-27 05:37:32 UTC
Description of problem:

About once a week pptpcm crashes with a segfault, here is the log entry:

Oct 26 05:52:19 han kernel: [33252.252665] pptpcm[2392]: segfault at d94470 ip 0804e796 sp bf9babb0 error 4 in pptp[8048000+e000]
Oct 26 05:52:19 han pptp[2392]: vpn_ppp9 log[pptp_read_some:pptp_ctrl.c:566]: read error: Connection reset by peer
Oct 26 05:52:19 han pptp[2392]: vpn_ppp9 log[callmgr_main:pptp_callmgr.c:259]: Closing connection (shutdown)
Oct 26 05:52:19 han pptp[2392]: vpn_ppp9 log[pptp_send_ctrl_packet:pptp_ctrl.c:637]: write error: Broken pipe
Oct 26 05:52:19 han pptp[2392]: vpn_ppp9 log[call_callback:pptp_callmgr.c:79]: Closing connection (call state)
Oct 26 05:52:19 han pptp[2392]: vpn_ppp9 log[pptp_read_some:pptp_ctrl.c:566]: read error: Bad file descriptor

Version-Release number of selected component (if applicable):

pptp-1.7.2-12.fc15.i686

How reproducible:

Once a week with a 24/7 pptp connection

Steps to Reproduce:
1. Establish pptp connection
2. wait ....

  
Actual results:

pptpcm crashes with a segfault, see above

Expected results:

pptpcm not to crash

Additional info:

Perhaps updating to the latest cvs source would help:

http://pptpclient.cvs.sourceforge.net/viewvc/pptpclient/pptp-linux/?sortby=date#dirlist

Comment 1 Paul Howarth 2011-10-27 06:45:26 UTC
The Fedora pptp package already has most of the changes from upstream cvs, with the exception of a couple of changes adding new functionality. Getting a backtrace of one of these crashes would be useful if you could do it.

Comment 2 Michael Weidner 2011-10-29 05:55:36 UTC
Here is the backtrace(I only made the pptp ip and host name unreadable):

# gdb /usr/sbin/pptp core.13323 
GNU gdb (GDB) Fedora (7.3.50.20110722-9.fc16)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/sbin/pptp...Reading symbols from /usr/lib/debug/usr/sbin/pptp.debug...done.
done.

warning: core file may not match specified executable file.
[New LWP 13323]
Missing separate debuginfo for 
Try: yum --disablerepo='*' --enablerepo='*-debuginfo' install /usr/lib/debug/.build-id/db/8dfab1cb00f1914573d3aa11e942b2d2a9b946
Core was generated by `pptp xxxx.xxxxxx.xxx --nolaunchpppd --loglevel 0 --logstring vpn_ppp9'.
Program terminated with signal 11, Segmentation fault.
#0  0x0804e796 in binary_search (key=29712, v=<optimized out>) at vector.c:149
149             if (key <  v->item[x].key) r = x - 1; else l = x + 1;
(gdb) thread apply all bt full

Thread 1 (LWP 13323):
#0  0x0804e796 in binary_search (key=29712, v=<optimized out>) at vector.c:149
        l = <optimized out>
        r = 13923351
        x = 6961675
#1  0x0804e9ba in vector_contains (v=0x9e78560, key=29712) at vector.c:138
        __PRETTY_FUNCTION__ = "vector_contains"
#2  0x0804bda4 in pptp_call_destroy (conn=0x9e784a0, call=0x9e78978) at pptp_ctrl.c:410
        __PRETTY_FUNCTION__ = "pptp_call_destroy"
#3  0x0804bea9 in pptp_conn_destroy (conn=0x9e784a0) at pptp_ctrl.c:449
        i = 0
        __PRETTY_FUNCTION__ = "pptp_conn_destroy"
#4  0x08050ee3 in callmgr_main (argc=3, argv=0xbf81fe60, envp=0xbf8211f4) at pptp_callmgr.c:297
        rc = <optimized out>
        read_set = {__fds_bits = {0 <repeats 32 times>}}
        write_set = {__fds_bits = {0 <repeats 32 times>}}
        tv = {tv_sec = 0, tv_usec = 0}
        inetaddr = {s_addr = 47496396}
        inet_sock = 0
        unix_sock = 1
        call_set = {__fds_bits = {0 <repeats 32 times>}}
        conn = 0x9e784a0
        call_list = 0x9e7a688
        max_fd = 6
        first = 0
        retval = <optimized out>
        i = <optimized out>
        phonenr = 0x0
        __FUNCTION__ = "callmgr_main"
        __PRETTY_FUNCTION__ = "callmgr_main"
#5  0x0804a312 in launch_callmgr (inetaddr=..., phonenr=0x0, argc=7, argv=0xbf8211d4, envp=0xbf8211f4) at pptp.c:505
        my_argv = {0xbf82296f "pptp", 0xb77c56a0 "xxx.xxx.xxx.x", 0x0}
        buf = "pptp: call manager for xxx.xxx.xxx.x\000z\324\000\001\000\000\000IM\301\000\364o\324\000\230\210\324\000\000\000\000\000\370\376\201\277Wz\305\000\034\207\004\bhf\005\b\334\376\201\277\000\000\000\000\376\063\000\000\300V|\267\240\376\201\277\000\000\000\000\062\065\065.\001\000\000\000>\377\201\277\364o\324\000\324\021\202\277\220?\000\v", <incomplete sequence \305>
        rc = <optimized out>
#6  0x0804a4c4 in open_callmgr (inetaddr=..., phonenr=0x0, argc=7, argv=0xbf8211d4, envp=0xbf8211f4, pty_fd=0, gre_fd=4)
    at pptp.c:474
        where = {sun_family = 1, 
---Type <return> to continue, or q <return> to quit---
          sun_path = "/var/run/pptp/255.255.255.255:xxx.xxx.xxx.x\000\260\254\004\b\004\000\000\000\234\377\201\277\020\000\000\000\000\000\000\000\034\207\004\bxe\005\b(\021\202\277|\241\004\bt)\202\277\310b\272\000\a\000\000\000\002\000\000\000?\324\002\324\021\202\277\a\000\000"}
        fd = 1
        pid = <optimized out>
        status = 4
        __FUNCTION__ = "open_callmgr"
#7  0x08049720 in main (argc=Cannot access memory at address 0x7410
) at pptp.c:375
        inetaddr = {s_addr = 47496396}
        callmgr_sock = -1
        ttydev = '\000' <repeats 2113 times>, "?\224", '\000' <repeats 45 times>, "x\006}\267(\t\202\277d\225\000\b\v\202\277\200\347\223\000\000\200\324\000\\*\000\000\003\000\000\000\062\000\000\000\377\377\377\377\000\000\000\000\000\000\000\000\330\003}\267X\t\202\277d\225\000\330\003}\267\367\341\223\000x\340r\000\000\000\000\000\b\000\000\000\200?\000\000\000\000\000\000P\032\000\070N\032\000\070N\032\000\000\000\000\000\005\000\000\000\000P\032\000\000\200\032\000|~\032\000\\\252\032\000\000P\032\000\003\000\000\000\b\000\000\000r\002\000\000\240\030\000\000\240\030\000\000d\225\000x\006}\267T\232\225\000\243?\000\b\000\000\000\017\000\000\000\000\020\000\000\003\000\000\000d\225\000\000\000\000\000d\225\000\340,\224\000\360\b}\267h\006}\267\017\000\000\000\000\000\000\000d\225\000\000\000\000\000/\b}\267\325)\224\000?\225\000h\006}\267\022"...
        tty_name = <optimized out>
        pty_fd = 0
        tty_fd = 0
        gre_fd = 4
        rc = <optimized out>
        parent_pid = 0
        child_pid = 13310
        call_id = <optimized out>
        peer_call_id = <optimized out>
        buf = "\000t\021\202\277\377\377\377\377\071\032\224\000\020\021\202\277<\203\004\b\370\020\202\277d\225\000\370\230\225\000\001\000\000\000\000\000\000\000\333b\224\000\260\232\225\000b\000\000\000\030\000\000\000\362;\005\b\a\000\000\000\326\331\310\000\002\217\324\000Qk\320\000l\000\000\000\000\000\000\000\034\207\004\b\360e\005\b", '\000' <repeats 12 times>"\230, u\272\000\000p\237\252\364o\324\000\030\000\000\000\362;\005\b\a\000"
        pppdargc = 0
        pppdargv = 0xbf8211f0
        phonenrbuf = "\000\356\341\310\000\a\000\000\000\220?\000\a\000\000\000\240\341\310\000\\e\005\b\000\000\000\000\245\330\310\000\260\235\004\b\000\000\000\000\001\000\000\000\030\000\000\000!\216\004\b\364o\324\000\320Q\324\000\\e\005\b"
        phonenr = 0x0
        launchpppd = 0
        debug = 0
        __FUNCTION__ = "main"
(gdb)

Comment 3 Michael Weidner 2011-10-31 15:18:11 UTC
Just for your information: I had the segfault again today, same backtrace.

Comment 4 Paul Howarth 2011-10-31 15:30:20 UTC
I've posted the backtrace upstream; we'll see if anyone can figure out what's going on.

Comment 5 Paul Howarth 2011-11-01 12:16:57 UTC
The upstream developer wonders if you could run pptp via valgrind, or run memtest on the affected system?

http://sourceforge.net/mailarchive/forum.php?thread_name=20111101113139.GA16011%40us.netrek.org&forum_name=pptpclient-devel

Comment 6 Michael Weidner 2011-11-01 13:17:49 UTC
I don't know how to use valgrind, sorry.

memtest on the affected system is ok, at least it was short time ago before installing F16 Beta, before installing a new release of Fedora I always do a memtest to be shure my memory is ok.

I know very well the effect of currupted memory, and I don't want to report 	phantom bugs.

Also no other process on this system is crashing with a segfault randomly. On a system with corrupted memory this is unusual.

And the bug locks very repeatable for me, today I had it again, and it was the same source line again with very simular data dumped by backtrace.

If you want I can make a backtrace again with the next core dump to proof this.

Comment 7 Michael Weidner 2011-11-02 07:12:59 UTC
I made the following now:

I checked out the acutal CVS of pptp an build it myself with debug symbols on.

Now the upstream developer will have the original line numbers if the crash happens again. And he can be shure what revision of his code is running

Only thing I can do now is waiting for the next crash I think.

Comment 8 Michael Weidner 2011-11-04 07:06:34 UTC
Short interim report:

Since using the self compiled ppptp form the aktual CVS no more segfault til now.

But I think, we have to wait a little longer, but it seems to be better.

Last week I had the segfault nearly every day, I'll give a new feedback after the weekend.

Comment 9 Michael Weidner 2011-11-08 06:19:40 UTC
No segfault with the self build pptp binary from the CVS to this day.

I'll give next report end of the week.

Comment 10 Paul Howarth 2011-11-08 15:37:42 UTC
I've taken another look at the differences between the Fedora code and the CVS code and I've found three sets of differences:

1. Porting to Solaris, which is exclusively code bracketed with:

   #if defined (__SVR4) && defined (__sun) /* Solaris */
   ...
   #endif

   So I think that can be discounted.

2. Patch from David Lamparter adding support for setting SO_MARK for the PPTP TCP control connection as well as on the GRE packets:

   http://marc.info/?l=pptpclient-devel&m=129830086208165

3. Patch from David Lamparter implementing the --nohostroute option:

   http://marc.info/?l=pptpclient-devel&m=129917040302942

I don't think any of these changes are related so I'm wondering how you built the CVS code, and which compiler options were used? The Fedora build uses the distribution-standard set of compiler flags:

gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables ...

If you've used different compiler options, maybe that makes a difference?

Comment 11 Michael Weidner 2011-11-08 16:04:53 UTC
I used the default Makefile provided in the CVS:

# make
echo "/* text added by Makefile target config.h */" > config.h
echo "#define PPTP_LINUX_VERSION \"1.7.2\"" >> config.h
echo "#define PPPD_BINARY \"/usr/sbin/pppd\"" >> config.h
echo "#define IP_BINARY \"/bin/ip\"" >> config.h
gcc -Wall -O -Wuninitialized -g    -c -o pptp.o pptp.c
gcc -Wall -O -Wuninitialized -g    -c -o pptp_gre.o pptp_gre.c
gcc -Wall -O -Wuninitialized -g    -c -o ppp_fcs.o ppp_fcs.c
gcc -Wall -O -Wuninitialized -g    -c -o pptp_ctrl.o pptp_ctrl.c
gcc -Wall -O -Wuninitialized -g    -c -o dirutil.o dirutil.c
gcc -Wall -O -Wuninitialized -g    -c -o vector.o vector.c
gcc -Wall -O -Wuninitialized -g    -c -o inststr.o inststr.c
gcc -Wall -O -Wuninitialized -g    -c -o util.o util.c
gcc -Wall -O -Wuninitialized -g    -c -o version.o version.c
gcc -Wall -O -Wuninitialized -g    -c -o test.o test.c
gcc -Wall -O -Wuninitialized -g    -c -o pptp_quirks.o pptp_quirks.c
gcc -Wall -O -Wuninitialized -g    -c -o orckit_quirks.o orckit_quirks.c
gcc -Wall -O -Wuninitialized -g    -c -o pqueue.o pqueue.c
gcc -Wall -O -Wuninitialized -g    -c -o pptp_callmgr.o pptp_callmgr.c
gcc -Wall -O -Wuninitialized -g    -c -o routing.o routing.c
gcc -Wall -O -Wuninitialized -g    -c -o pptp_compat.o pptp_compat.c
gcc -o pptp pptp.o pptp_gre.o ppp_fcs.o pptp_ctrl.o dirutil.o vector.o inststr.o util.o version.o test.o pptp_quirks.o orckit_quirks.o pqueue.o pptp_callmgr.o routing.o pptp_compat.o  -lutil
pod2man pptpsetup > pptpsetup.8

Comment 12 Paul Howarth 2011-11-08 16:23:05 UTC
Building like that should result in a pptp that can't change the routing table as Fedora's "ip" binary is in /sbin rather than /bin. You'd do "make IP=/sbin/ip" to fix that.

I can think of a couple of experiments we could do at this point:

1. You could build the CVS code using Fedora's compiler flags:

  make CFLAGS="-Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom
-fasynchronous-unwind-tables" IP=/sbin/ip

2. I could build an RPM using the Fedora code and upstream's compiler flags for you to try.

Would you be willing to try either or both of these?

Comment 13 Michael Weidner 2011-11-08 16:54:18 UTC
I did 1.:

# make CFLAGS="-Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables" IP=/sbin/ip
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o pptp.o pptp.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o pptp_gre.o pptp_gre.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o ppp_fcs.o ppp_fcs.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o pptp_ctrl.o pptp_ctrl.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o dirutil.o dirutil.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o vector.o vector.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o inststr.o inststr.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o util.o util.c
util.c: In Funktion »sigpipe_read«:
util.c:145:7: Warnung: Der Rückgabewert von »read«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]
util.c: In Funktion »sigpipe_handler«:
util.c:121:8: Warnung: Der Rückgabewert von »write«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o version.o version.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o test.o test.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o pptp_quirks.o pptp_quirks.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o orckit_quirks.o orckit_quirks.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o pqueue.o pqueue.c
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o pptp_callmgr.o pptp_callmgr.c
pptp_callmgr.c: In Funktion »callmgr_main«:
pptp_callmgr.c:222:17: Warnung: Der Rückgabewert von »read«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]
pptp_callmgr.c:223:17: Warnung: Der Rückgabewert von »read«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]
pptp_callmgr.c: In Funktion »call_callback«:
pptp_callmgr.c:76:18: Warnung: Der Rückgabewert von »write«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o routing.o routing.c
routing.c: In Funktion »routing_init«:
routing.c:117:8: Warnung: Der Rückgabewert von »fgets«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]
gcc -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables   -c -o pptp_compat.o pptp_compat.c
gcc -o pptp pptp.o pptp_gre.o ppp_fcs.o pptp_ctrl.o dirutil.o vector.o inststr.o util.o version.o test.o pptp_quirks.o orckit_quirks.o pqueue.o pptp_callmgr.o routing.o pptp_compat.o  -lutil
pod2man pptpsetup > pptpsetup.8

Now waiting if the segfault happens again.

Comment 14 Michael Weidner 2011-11-10 06:53:34 UTC
Short question:

Could the segfault relate to the bug corrected here:

http://koji.fedoraproject.org/koji/buildinfo?buildID=270759

My own builds all where created with glibc-2.14.90-14 and I had no crash with all my own builds till now?

Nevertheless I will let the build of my last post run till weekend end the try to switch back to the original pptp binary and look if the segfault will appear again.

Perhaps my provider has changend something and because of this the segfault does not happen. Therfore I'll do the back-to-back test to check this.

Comment 15 Paul Howarth 2011-11-10 08:16:07 UTC
(In reply to comment #14)
> Short question:
> 
> Could the segfault relate to the bug corrected here:
> 
> http://koji.fedoraproject.org/koji/buildinfo?buildID=270759

I doubt it. That bug appears to have been introduced in October but the pptp package in F-16 was originally built for F-15 back in February.

> Perhaps my provider has changed something and because of this the segfault
> does not happen. Therefore I'll do the back-to-back test to check this.

OK, thanks.

Comment 16 Michael Weidner 2011-11-11 06:27:45 UTC
This night I had the sgefault again with my self build pptp binary from CVS sources and the distribution-standard set of compiler flags from comment 13:

Nov 11 01:08:14 han kernel: [300864.120816] pptpcm[622]: segfault at 4e12470 ip 0804e93e sp bfb5a610 error 4 in pptp[8048000+e000]

Sad to say I have no core dump for backtrace because I booted my server in the meantime an forgot to set the ulimit.

But I think we are on the right track, it ist very likely the same seg fault as before and it happend again with distribution-standard set of compiler flags.

What should I do next to confirm this?

Comment 17 Paul Howarth 2011-11-11 13:59:57 UTC
Try this build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=3507432

I've changed -O2 to -O0 but otherwise left the compiler flags alone.

Comment 18 Michael Weidner 2011-11-11 14:19:35 UTC
Ok, I'll try it and report.

Comment 19 Michael Weidner 2011-11-15 06:26:02 UTC
Short interim report:

No segfault with your new build so far, looks good. If non happens til weekend, I think we got it.

Comment 20 Michael Weidner 2011-11-18 11:18:13 UTC
No segfault for a week now with the build from http://koji.fedoraproject.org/koji/taskinfo?taskID=3507432.

I think, the -O0 did it.

Comment 21 Susi Lehtola 2011-11-18 11:50:48 UTC
Optimization may reveal bugs in the source code, which I think is the case here.

Instead of hand-compiling the latest CVS source, I'd suggest either hand-compiling the same sources as in the Fedora package, or trying a Fedora package (compiled with default %optflags) compiled using the newest sources.

Comment 22 Paul Howarth 2011-11-18 12:03:42 UTC
(In reply to comment #21)
> Optimization may reveal bugs in the source code, which I think is the case
> here.
> 
> Instead of hand-compiling the latest CVS source, I'd suggest either
> hand-compiling the same sources as in the Fedora package, or trying a Fedora
> package (compiled with default %optflags) compiled using the newest sources.

The build that Michael has been running for the last week has the latest upstream sources (with the exception of the Solaris compatibility patch described in Comment #10) and the Fedora %{optflags} with -O2 changed to -O0.

In Comment #16 Michael reported that the same code (plus the Solaris patch) compiled with standard Fedora %{optflags} eventually segfaulted.

So it's either the Solaris patch or the %{optflags} that made the difference it would seem. And remember that the Solaris patch is the addition of code bracketed by:

   #if defined (__SVR4) && defined (__sun) /* Solaris */
   ...
   #endif

So I'm pretty certain it's the %{optflags} that are precipitating this problem.

Comment 23 Susi Lehtola 2011-11-18 13:46:49 UTC
OK. But the issue still probably is that the optimization just reveals a bug in the source code that for some reason isn't manifested at lower levels of optimization (I saw a bug exactly like this in cppcheck).

Comment 24 Michael Weidner 2011-11-18 17:01:21 UTC
Sorry to say: at the moment the segfault was there again with your build.

Same in the Logfile as in my first post:

Nov 18 17:10:35 han kernel: [187512.120518] pptpcm[20554]: segfault at d99470 ip 080500e1 sp bff6fc78 error 4 in pptp[8048000+f000]
Nov 18 17:10:35 han pptp[20554]: vpn_ppp9 log[pptp_read_some:pptp_ctrl.c:566]: read error: Connection reset by peer
Nov 18 17:10:35 han pptp[20554]: vpn_ppp9 log[callmgr_main:pptp_callmgr.c:263]: Closing connection (shutdown)
Nov 18 17:10:35 han pptp[20554]: vpn_ppp9 log[pptp_send_ctrl_packet:pptp_ctrl.c:637]: write error: Broken pipe
Nov 18 17:10:35 han pptp[20554]: vpn_ppp9 log[call_callback:pptp_callmgr.c:81]: Closing connection (call state)
Nov 18 17:10:35 han pptp[20554]: vpn_ppp9 log[pptp_read_some:pptp_ctrl.c:566]: read error: Bad file descriptor

Without optimization  the error is there also, but not so often. But in the meantime I think the optimization is not the key because I found out a new fact.

After the segfault the connection is established again immediately from ppp-watch and the login is successful.

When I kill the connection "by hand" with the kill -9 command to pptp or by shutting down the underlaying eth device, I cannot login successful immediate.This is what I found out now (my provider blocks the login until the server runs on a echo timeout I think). I have to wait about a minute or so.

So this for me looks like my provider trys to sutdown the connection from server side and this leeds to the segfault.

Maybe it is provider realated and my provider sends crontrol erroneous messages, I dont't know.

Comment 25 Michael Weidner 2011-11-25 18:32:53 UTC
Now I had no segfault for a whole week with the build without optimization.

It is undoubtably much better with this build.

Comment 26 Michael Weidner 2011-12-04 10:58:38 UTC
No segfault for another week, without optimization it is much more stable.

Comment 27 Michael Weidner 2011-12-09 07:02:49 UTC
Still no segfault till now, perhaps to one I had without optimization was something differnt. With your build from http://koji.fedoraproject.org/koji/taskinfo?taskID=3507432 pptp the first time is stable and reliable for me.

Comment 28 Paul Howarth 2011-12-12 14:15:27 UTC
I have another build for you to try. This one has the -O2 optimization flags back again but I've added patches that address almost all of the compiler warnings, including the potentially related ones about comparisons of signed and unsigned values, and unsafe typecasts violating strict anti-aliasing rules:

http://koji.fedoraproject.org/koji/taskinfo?taskID=3579744

Comment 29 Michael Weidner 2011-12-12 14:38:50 UTC
Ok, thx, I installed it.

I'll try out and report.

Comment 30 Michael Weidner 2011-12-16 06:57:32 UTC
Till now no segfault with your new build, I'll give next report next week.

Comment 31 Michael Weidner 2011-12-20 06:36:51 UTC
All ok till now, no segfault, still looks very good.

Comment 32 Michael Weidner 2011-12-27 20:14:33 UTC
Still no segfault with your latest build, looks very good

Comment 33 Michael Weidner 2012-01-03 10:23:55 UTC
No sgefault til today, still looks good.

Comment 34 Fedora Update System 2012-01-04 14:42:31 UTC
pptp-1.7.2-14.fc16 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/pptp-1.7.2-14.fc16

Comment 35 Fedora Update System 2012-01-04 14:42:40 UTC
pptp-1.7.2-14.fc15 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/pptp-1.7.2-14.fc15

Comment 36 Paul Howarth 2012-01-04 14:47:01 UTC
As it's looking so good, I've done an official build now and will push it for F-15 and F-16 in a week or so. There are no code changes from the last test build. Thanks for the testing.

Comment 37 Fedora Update System 2012-01-24 19:57:11 UTC
pptp-1.7.2-14.fc15 has been pushed to the Fedora 15 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 38 Fedora Update System 2012-01-24 20:00:26 UTC
pptp-1.7.2-14.fc16 has been pushed to the Fedora 16 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 39 Fedora End Of Life 2013-01-17 01:54:10 UTC
This message is a reminder that Fedora 16 is nearing its end of life.
Approximately 4 (four) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 16. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as WONTFIX if it remains open with a Fedora 
'version' of '16'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version prior to Fedora 16's end of life.

Bug Reporter: Thank you for reporting this issue and we are sorry that 
we may not be able to fix it before Fedora 16 is end of life. If you 
would still like to see this bug fixed and are able to reproduce it 
against a later version of Fedora, you are encouraged to click on 
"Clone This Bug" and open it against that version of Fedora.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

The process we are following is described here: 
http://fedoraproject.org/wiki/BugZappers/HouseKeeping

Comment 40 Fedora End Of Life 2013-02-14 02:55:43 UTC
Fedora 16 changed to end-of-life (EOL) status on 2013-02-12. Fedora 16 is 
no longer maintained, which means that it will not receive any further 
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
Fedora please feel free to reopen this bug against that version.

Thank you for reporting this bug and we are sorry it could not be fixed.


Note You need to log in before you can comment on or make changes to this bug.