On Mar 1, 2011, at 2:45 PM, Jeff Johnson wrote:

> 
> On Mar 1, 2011, at 2:33 PM, Mark Hatle wrote:
> 
>> On 3/1/11 1:27 PM, Jeff Johnson wrote:
>>> 
>>> On Mar 1, 2011, at 2:20 PM, Mark Hatle wrote:
>>> 
>>>> I think jbj might have figured out the problem.  Zypper is not using pcre, 
>>>> but
>>>> is instead causing mire to use the system regex.
>>>> 
>>>> I made some local changes in an attempt to point the #include of regex.h 
>>>> in mire
>>>> with a #error.  I'm in the process of building both RPM and Zypper now to 
>>>> see if
>>>> this causes a build failure -- if it does, we need to figure out a Zypper
>>>> solution because it's bringing in mire.h.
>>>> 
>>> 
>>> If you can show me the Zypper code that's trying to use miRE, I can
>>> likely suggest a clean fix.
>> 
>> I am not finding any direct inclusions of "miRE" within Zypper or libzypper.
>> However, I am finding an inclusion of regex.h within libzypper.
>> 
> 

One last note:

Here's the valgrind spewage from the pojy bug report:

=444== Invalid read of size 1
==444==    at 0x694C5DC: regcomp (regcomp.c:502)
==444==    by 0x86F139B: mireRegcomp (mire.c:364)
==444==    by 0x6E46E22: defaultMachine (rpmrc.c:475)
==444==    by 0x6E4743B: rpmSetMachine (rpmrc.c:841)
==444==    by 0x6E475B3: rpmRebuildTargetVars.clone.1 (rpmrc.c:925)
==444==    by 0x6E47DFA: rpmReadConfigFiles (rpmrc.c:1115)
==444==    by 0x52E45A6: zypp::target::rpm::librpmDb::globalInit() (in 
/usr/lib/libzypp.so.810.1.0)
==444==    by 0x52C6990: zypp::target::rpm::RpmDb::RpmDb() (in 
/usr/lib/libzypp.so.810.1.0)
==444==    by 0x52FC023: 
zypp::target::TargetImpl::TargetImpl(zypp::filesystem::Pathname const&, bool) 
(in /usr/lib/libzypp.so.810.1.0)
==444==    by 0x5412F08: zypp::Target::Target(zypp::filesystem::Pathname 
const&, bool) (in /usr/lib/libzypp.so.810.1.0)
==444==    by 0x5425BA3: 
zypp::zypp_detail::ZYppImpl::initializeTarget(zypp::filesystem::Pathname 
const&, bool) (in /usr/lib/libzypp.so.810.1.0)
==444==    by 0x5420E2E: 
zypp::ZYpp::initializeTarget(zypp::filesystem::Pathname const&, bool) (in 
/usr/lib/libzypp.so.810.1.0)
==444==  Address 0xb2a9f88 is not stack'd, malloc'd or (recently) free'd
==444== 

The only way that backtrace can happen (that I can see) is if RPM, not zypper, 
is mis-compiled
using an unfixed (to redefine colliding symbols) "system: PCRE with
        #include <pcreposix.h>

which leaves you two choices:

   1) fix you "system" PCRE <pcreposix.h>
   2) build --with-pcre=internal

>From what I know of zypper (mostly libsatsolver and tools), the code rips 
>everything
out-of-an-rpmdb and uses as little as possible from RPM libraries. But I haven't
looked for 2+ years.

hth

73 de jeff


______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        rpm-devel@rpm5.org

Reply via email to