> On July 27, 2014, 11:32 a.m., Thomas Lübking wrote:
> > kdeui/util/kcrash.cpp, line 316
> > <https://git.reviewboard.kde.org/r/119497/diff/1/?file=293441#file293441line316>
> >
> >     is libdispatch OSX only or is it also used on FreeBSD?
> >     
> >     The question (more to Michael ;-) is whether unconditionally closing 
> > all FDs is acceptable in general (there's hell lot of Q_OS_* items, incl. 
> > Q_OS_HURD ;-) or the check should be inverted to
> >     
> >     #ifdef Q_OS_LINUX
> 
> Michael Pyne wrote:
>     Unfortunately closing all FDs is probably not acceptable *in general*, 
> but in the context of a launching a crash handler in a crashed KDE GUI 
> application, I don't see any reason why it would hurt, it's not as if the 
> application itself is going to need the FD anymore as it's about to crash and 
> has already run its emergency save function (and if the app does need it, 
> they can either use their own crash function or use the documented KeepFD 
> flag). Closing all FDs is a security and rlimit precaution in case Dr. Konqi 
> gets started directly from the crashing proc instead of via kdeinit.
>     
>     The check should probably remain on any POSIX-alike, in my opinion, as we 
> wouldn't want Dr. Konqi on Mac OS X accidentally having access to a crashing 
> application FDs if launched directly either.
> 
> Ian Wadham wrote:
>     On Apple OS X it is Apple's COCOA library internals that have the problem 
> FDs, not the app, and COCOA crashes internally if you close its FDs in the 
> crash handler. We do not know what numbers those FDs have in any arbitrary 
> app or run of an app, and I think there is intrinsically no way to know. We 
> also do not know what FDs may have been created by internals of the KDE 
> library, but they do not seem to mind being closed peremptorily.
>     
>     I could put a setFlags call (conditional on Q_OS_MAC) a few lines earlier 
> in the default crash-handler, but there does not seem to be much point in 
> that.
>     
>     It is quite safe to leave FDs open, because KCrash closes them all 
> unconditionally on line 623 of kcrash.cpp (if it starts Dr K by forking), 
> with the comment "We are in the child now. Close FDs unconditionally." 
> Presumably, by that time, the COCOA library has had a chance to terminate its 
> internals gracefully, because this time there is no secondary crash. 
> Presumably also, if Dr K is started via kinit and klauncher, its FDs are all 
> its own, but kinit is a very grey area for me.
> 
> Michael Pyne wrote:
>     Yes, you're right. It seems in the only problematic case (a direct 
> fork/exec to start drkonqi) that we already close FDs unconditionally. In 
> that case I think don't closing the FDs from the crash handler adds any value 
> (and I suppose, might even interfere in debugging once drkonqi can get a 
> debugger attached), so it might be best to remove the feature from the 
> default crash handler entirely. David, thoughts?

NOT closing FDs at this point has been made conditional on Q_OS_WIN or 
Q_OS_MAC. Others may make it unconditional on all platforms. It might be a safe 
thing to do...


> On July 27, 2014, 11:32 a.m., Thomas Lübking wrote:
> > kinit/kinit.cpp, line 1478
> > <https://git.reviewboard.kde.org/r/119497/diff/1/?file=293442#file293442line1478>
> >
> >     this and line 1504 look like debug leftovers? or are they needed for 
> > extra logging?
> 
> Ian Wadham wrote:
>     I was using them for diagnosing this portability bug in kinit, but I 
> thought it would be best to leave them in as a safety measure, so that 
> someone can see what happened in the event that my issue/question re line 119 
> (what to do about the usage of "DISPLAY" in Apple OS X) causes premature 
> termination of kdeinit4 in the future in an Apple OS X environment.

This part of the patch has been discontinued.


- Ian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/119497/#review63257
-----------------------------------------------------------


On Sept. 15, 2014, 1:39 a.m., Ian Wadham wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/119497/
> -----------------------------------------------------------
> 
> (Updated Sept. 15, 2014, 1:39 a.m.)
> 
> 
> Review request for KDE Software on Mac OS X, KDE Runtime, kdelibs, and 
> Michael Pyne.
> 
> 
> Repository: kdelibs
> 
> 
> Description
> -------
> 
> When a KDE app crashes in Apple OS X, it just disappears from the screen. At 
> the most, the user is invited to report the crash to Apple. AFAIK this has 
> been a problem in KDE on Apple OS X for years, leading to frustration with 
> KDE among Apple users and MacPorts developers and an attitude among KDE 
> developers of "Why does nobody report the problem(s) on bugs.kde.org?"
> 
> It is my strong belief that the failure to report crashes of KDE apps in 
> Apple OS X also exists in Frameworks.
> 
> So far I have identified a number of portability bugs in KDE on Apple OS X: 1 
> in KCrash, 1 in kdeinit4 and 5 in Dr Konqi. Patches for the first two are 
> submitted in this review. Patches for three more are submitted in part 2 of 
> this review, against kde-runtime. I am still investigating the other two 
> problems in Dr Konqi - and there could be more than two...
> 
> In this review we have two portability problems:
> 
> 1. KCrash itself crashes (SIGILL) when it tries to close all file descriptors 
> and so Dr Konqi is not started. Some of the FDs belong to the Apple OS X 
> library (COCOA) and it crashes if they are closed prematurely.
> 
> 2. The preferred way to start Dr K is via a socket message to kdeinit4, but 
> that fails in Apple OS X because kdeinit4 is listening with the wrong socket 
> name. The DISPLAY ID is missing from the end of the name. The fallback is for 
> KCrash to use fork() and exec(), which works, but could cause Dr K to be 
> polluted, depending on the nature of the crash.
> 
> This "deafness" of kdeinit4 (and klauncher) could be causing other failures 
> in KDE software in the Apple OS X environment.
> 
> 
> Diffs
> -----
> 
>   kdeui/util/kcrash.cpp 45eb46b 
> 
> Diff: https://git.reviewboard.kde.org/r/119497/diff/
> 
> 
> Testing
> -------
> 
> Using Apple OS X 10.7.5 (Lion) on a MacBook Pro, I have installed KDE libs 
> via MacPorts (at version 4.12.5) and I have adapted kdesrc-build to run in an 
> Apple OS X environment and used it to test against the KDE 4.13 branch.  I 
> have been testing with a KDE app that I can crash at will and using stderr 
> and Apple OS X Console log output to determine the outcome.
> 
> Please note that I am the -only- KDE developer who has this kind of setup, 
> but I am NOT a KDE core developer. My experience before now has been in KDE 
> Games. However I used to be a UNIX and database guru before I retired in 1998.
> 
> I NEED HELP from KDE -core- developers to proceed further. These problems 
> also exist in FRAMEWORKS, but I am as yet unable to build or test Frameworks 
> on Apple OS X. And I am sure there are many more Apple OS X portability 
> problems in KDE software.
> 
> Without my patches, Dr Konqi is not started and, if it does get past its own 
> crash, KCrash reports:
> KCrash: Attempting to start 
> /kdedev/kde4.13/kde4/lib/kde4/libexec/drkonqi.app/Contents/MacOS/drkonqi from 
> kdeinit
> sock_file=/kdedev/kde4.13/home/.kde4.13/socket-Tara.local/kdeinit4__tmp_launch-svPd0L_org.x_0
> Warning: connect() failed: : No such file or directory
> 
> With my patches, Dr Konqi can always be started directly (using fork()) and 
> it -will- start via kdeinit4 and klauncher but it immediately runs into a 
> privilege problem with Apple OS X (a problem which I am still investigating).
> 
> I would not have got this far without help from Michael Pyne, Thomas Lübking 
> and several of the MacPorts developers, as well as the unfailing enthusiasm 
> and encouragement of my friend Marko Käning.
> 
> 
> Thanks,
> 
> Ian Wadham
> 
>

Reply via email to