Hi All I've tried reproducing this in 0.8.2 and can't, so it does appear to have been fixed. Thanks for fixing this.
Regards James On 11 June 2016 at 09:26, Manuel A. Fernandez Montecelo < manuel.montez...@gmail.com> wrote: > Control: tags -1 + pending > > > Hi, > > 2016-05-20 08:39 David Kalnischkies: > >> Hi, >> >> (disclaimer: apt, not aptitude, maintainer talking) >> >> On Fri, May 20, 2016 at 09:54:23AM +1000, James Tocknell wrote: >> >>> 0x00007ffff7b3feed in debVersioningSystem::CheckDep(char const*, int, >>> char >>> const*) () from /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0 >>> #0 0x00007ffff7b3feed in debVersioningSystem::CheckDep(char const*, int, >>> char const*) () from /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0 >>> #1 0x00005555557767c1 in infer_reason (pkg=..., reasons=std::set with 1 >>> elements = {...}) at ../../../../src/generic/apt/infer_reason.cc:178 >>> >> >> [It is a bit confusing that the code of frame #1 is actually calling >> IsSatisfied(), but it is just a wrapper around CheckDep() so lets just >> ignore that for the moment] >> >> 10f0cf4a04b2526e9dea65facde865d993396417 adds this code, which passes >> the candidate version to IsSatisfied – but not all packages have >> a candidate! So that code should be adapted to test first if the package >> has a candidate and only if so check if the candidate satisfies the >> dependency. >> >> >> Now, we could ask why IsSatisfied requires a valid version and the >> answer is: nobody (aka me) thought anybody would pass it an invalid >> version as the soul reason for the one-line IsSatisfied is to hide the >> call to CheckDep behind a slightly nicer interface (1 vs 3 parameters) >> and all existing calls in apt passed only valid versions in… >> >> I am not sure it is a good idea to add checks to that method as its in >> various hot paths for apt & it has the potential of hiding bugs (at the >> expense of opening some like here). Either way, that needs more thought >> than I can shell out at the moment & adapting the call site should be >> easy. >> > > Thanks for the dignosis. > > Since I couldn't find an easy way to reproduce it (the texlive packages > are huge for my wrongly-called broadband), I am basing this fix on the > diagnosis above. > > > 2016-05-24 05:03 James Tocknell: > >> I've got a more useful backtrace (had to build apt to get its debug >> symbols). The issue seems to be line 178 in infer_reason.cc, which >> got introduced in 0.8. Somehow (I'm not sure, everything seems to have >> been >> inlined...), it's calling debVersioningSystem::CheckDep with an invalid >> address. >> > > It probably happens for the reasons that David explained. > > I think that it has to do with the reverse dependencies of virtual > packages. I tried to reproduce it with csh|tcsh (virtual package > c-shell) and some -perl reverse dependency, but I tried to remove them > and mark as auto in different combinations for many minutes, and I > couldn't trigger it. > > If you still experience this problem, it would be very nice if you > confirm that it's indeed fixed when we release the next version. > > > Cheers. > -- > Manuel A. Fernandez Montecelo <manuel.montez...@gmail.com> > -- Don't send me files in proprietary formats (.doc(x), .xls, .ppt etc.). It isn't good enough for Tim Berners-Lee <http://opendotdotdot.blogspot.com/2010/04/rms-and-tim-berners-lee-separated-at.html>, and it isn't good enough for me either. For more information visit http://www.gnu.org/philosophy/no-word-attachments.html. Truly great madness cannot be achieved without significant intelligence. - Henrik Tikkanen If you're not messing with your sanity, you're not having fun. - James Tocknell In theory, there is no difference between theory and practice; In practice, there is.