1) script "/etc/sysconfig/network-scripts/ifup-ppp" cleans out the file "var/run/ppp-$DEVICE.dev" and then runs pppd, supposing that it will write something to that file. And the script "/etc/sysconfig/network-scripts/ifdown-ppp" on the line "file=/var/run/`cat /var/run/ppp-$DEVICE.dev`.pid" supposes that there is the device name (e.g. "ppp0"). The problem is that pppd (version 2.3.3 and 2.3.5) doesn't write there anything, so ifdown can't find the PID and kill pppd. 2) when shutting down a ppp device by ifdown (no matter it doesn't work), ifdown executes ifdown-ppp and then ifdown-post. But ifdown-post is execute by ifdown-ppp and even by /etc/ppp/ip-down when pppd is killed. I think it should only be executed by ifdown.
Oops! I just downloaded the official package and found out that the package I used before was a bit modified (the file "/etc/ppp/ip-up" was missing). So the first bug is fixed in the current release of me :) But the second one still seems to be there - the if*-post scripts are still called several times (from /etc/ppp/ip-*, /etc/sysconfig/network-scripts/if[up|down] and ifdown-ppp.
Unable to replicate this problem with the latest initscripst for 5.2.