On 06/07/2012 07:34 PM, Ben Hutchings wrote:
On Mon, Jun 04, 2012 at 05:26:28PM -0400, Tim Abbott wrote:
> Hi Ben,
>
> Your comment about source code is rather off-topic for this bug
> report, but since there seems to be a misunderstanding on this
> point, I'd like to clarify: Every Ksplice update tarball ships with
> a README file containing instructions on how to request the source
> code for that update from the appropriate people in Oracle Legal.
> Anyone who follows those instructions can get a copy of the relevant
> source code.
I understand that Matthew Garrett tried to take up this offer a while
ago, and is still waiting for complete source code. It doesn't seem
to be a good faith attempt to fulfil GPL obligations.
This is not my department, but as I understand it, Matthew Garrett
received complete source code in response to each of his various
requests for Ksplice source code.
> To briefly clarify my original email, it is true that enabling
> CONFIG_KALLSYMS_ALL would make life slightly easier for Ksplice and
> similar tools that look at kernel data structures (e.g. debugging
> tools).
No doubt true, but it is also strictly redundant with debuginfo.
This is where I disagree. Debuginfo is both huge (since it contains
lots of data beyond the basic symbol information in kallsyms) and is
also not necessarily available on user systems, meaning that any sort of
patching or debugging tool intending to get wide use can't rely on it.
Further, any system which contains third-party modules (open source or
not) will not have symbol data for those modules unless the vendors of
those third-party modules provide a separate debuginfo package (many do
not); with kallsyms, you're guaranteed to have accurate information that
comes from the modules that are actually loaded on the system.
As I think I mentioned before, when folks upgrade the kernel version on
disk on a Debian system and don't immediately reboot (which folks do
_all the time_ whether they're using Ksplice or not), and then load
kernel modules, they'll get kernel modules from the upgraded kernel (at
least in the common case where the ABI doesn't change). As a
consequence, if you're any sort of debugging/instrumentation tool that
inspects the running kernel's code, you need to be able to handle the
case where the kernel is running modules that don't actually go with
either the running kernel (via "uname -a") or the currently version of
the linux-image-* package installed on disk. Trying to do anything to
get symbol information in that sort of situation using debuginfo is a
disaster; what you want is kallsyms.
> That said, Ksplice doesn't require CONFIG_KALLSYMS_ALL --
> the Ksplice Uptrack service has been providing updates for systems
> running Debian Linux since 2009. While your enabling
> CONFIG_KALLSYMS_ALL might allow us to delete like 50 lines of code 2
> years from now when Squeeze reaches end of life, I submitted this
> bug report primarily because I'd like it to be the case that other
> folks developing similar innovative new technologies don't have to
> do the extra work of supporting !CONFIG_KALLSYMS_ALL in order to
> support all the major Linux distributions. I hope you'll consider
> my suggestion on its technical merits.
I'm going to have see a request from an actual other person before I
care to spend time on this.
(In case anyone else in the kernel team wants to proceed with this,
that's not a NAK. The issue is that memory and/or flash partition
constraints make this unsuitable for some configurations, and you'll
need to work out which ones to enable it for.)
CONFIG_KALLSYMS_ALL adds less than 1% to the size of the kernel over
CONFIG_KALLSYMS (obviously this depends on what options one had enabled
in the first place), so only on truly embedded settings will that matter
at all. Could you at least just enable it for the architectures where
none of Debian's stock kernels are designed for embedded environments
(e.g. x86, sparc, power)?
-Tim Abbott