[libvirt] [libvirt-php] libvirt_connect not reading out credential info on 0.5.2

Fernando Casas Schössow casasfernando at hotmail.com
Tue Sep 6 17:27:48 UTC 2016


Thanks for the explanation Michal.

I will be looking forward the fix to try it. :)

On mar, sep 6, 2016 at 6:59 , Michal Privoznik <mprivozn at redhat.com> 
wrote:
> On 06.09.2016 13:45, Fernando Casas Schössow wrote:
>>  Thanks for the instructions since I'm not familiar with debugging 
>> as you
>>  probably guessed. :)
>> 
>>  Here you have gdb output:
>> 
>>  GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-80.el7
>>  Copyright (C) 2013 Free Software Foundation, Inc.
>>  License GPLv3+: GNU GPL version 3 or later
>>  <http://gnu.org/licenses/gpl.html>
>>  This is free software: you are free to change and redistribute it.
>>  There is NO WARRANTY, to the extent permitted by law. Type "show 
>> copying"
>>  and "show warranty" for details.
>>  This GDB was configured as "x86_64-redhat-linux-gnu".
>>  For bug reporting instructions, please see:
>>  <http://www.gnu.org/software/gdb/bugs/>...
>>  Reading symbols from /usr/bin/php...Reading symbols from
>>  /usr/bin/php...(no debugging symbols found)...done.
>>  (no debugging symbols found)...done.
>>  Missing separate debuginfos, use: debuginfo-install
>>  php-cli-5.4.16-36.3.el7_2.x86_64
>>  (gdb) run /storage/lighttpd/wwwroot/libvirt.php
>>  Starting program: /usr/bin/php /storage/lighttpd/wwwroot/libvirt.php
>>  [Thread debugging using libthread_db enabled]
>>  Using host libthread_db library "/lib64/libthread_db.so.1".
>>  [New Thread 0x7fffe2ceb700 (LWP 31799)]
>>  [Thread 0x7fffe2ceb700 (LWP 31799) exited]
>>  PHP Warning: unlink(test.log): No such file or directory in
>>  /storage/lighttpd/wwwroot/libvirt.php on line 4
>> 
>>  Program received signal SIGSEGV, Segmentation fault.
>>  0x00007fffe9ad54a0 in virClassIsDerivedFrom () from 
>> /lib64/libvirt.so.0
>>  (gdb) backtrace
>>  #0 0x00007fffe9ad54a0 in virClassIsDerivedFrom () from 
>> /lib64/libvirt.so.0
>>  #1 0x00007fffe9b861ac in virDomainLookupByUUIDString () from
>>  /lib64/libvirt.so.0
>>  #2 0x00007fffea1e82c5 in generate_uuid () from
>>  /usr/lib64/php/modules/libvirt-php.so
>>  #3 0x00007fffe7d3385a in wsmc_create_request () from
>>  /lib64/libwsman_client.so.4
>>  #4 0x00007fffe7d3546f in wsmc_action_enumerate () from
>>  /lib64/libwsman_client.so.4
>>  #5 0x00007fffe9c8e34a in hypervEnumAndPull () from 
>> /lib64/libvirt.so.0
>>  #6 0x00007fffe9c8ee49 in hypervGetMsvmComputerSystemList () from
>>  /lib64/libvirt.so.0
>>  #7 0x00007fffe9c8dacd in hypervConnectOpen () from 
>> /lib64/libvirt.so.0
>>  #8 0x00007fffe9b82f39 in virConnectOpenInternal () from 
>> /lib64/libvirt.so.0
>>  #9 0x00007fffe9b845ce in virConnectOpenAuth () from 
>> /lib64/libvirt.so.0
>>  #10 0x00007fffea1e1190 in zif_libvirt_connect () from
>>  /usr/lib64/php/modules/libvirt-php.so
>>  #11 0x000055555586b57c in zend_do_fcall_common_helper_SPEC ()
>>  #12 0x00005555557e8527 in execute ()
>>  #13 0x00005555557c115f in zend_execute_scripts ()
>>  #14 0x0000555555760976 in php_execute_script ()
>>  #15 0x000055555586d598 in do_cli ()
>>  #16 0x000055555561a12e in main ()
> 
> 
> Ah, this is exactly what I needed. Well, we're doomed. There are two
> problems here.
> 
> The first one is: libvirt-php is exporting symbols that is shouldn't
> have. Like for instance generate_uuid which is clearly meant as an
> internal helper but because of our own bug (well, missing
> implementation) it is being exported. Thus, when linker is linking the
> libraries together it finds out that libwsman_client.so.4 needs
> generate_uuid symbol which it finds in libvirt-pgp.so instead of
> libwsman.so.1.0.0 (which is what libwsman devels intended).
> 
> objdump -T /usr/lib64/libwsman_client.so.4 | grep generate_uuid
> 0000000000000000      D  *UND*  0000000000000000              
> generate_uuid
> 
> bjdump -T /usr/lib64/php/modules/libvirt-php.so | grep generate
> 000000000002b660 g    DF .text  00000000000000ce  Base        
> generate_uuid
> 000000000002b590 g    DF .text  00000000000000cb  Base        
> generate_uuid_any
> 
> objdump -T /lib64/libwsman.so.1.0.0 | grep generate
> 000000000000e820 g    DF .text  00000000000001bd  Base        
> generate_uuid
> 000000000001f950 g    DF .text  000000000000005a  Base        
> wsman_generate_fault_buffer
> 000000000001f8c0 g    DF .text  0000000000000082  Base        
> wsman_generate_fault
> 
> The fix on our part is obvious.
> 
> The second problem is, libwsman devels should not really be using such
> generic names in their libraries. At least they need to prefix their
> public function names with wsman_ (see those other 'generate_fault'
> functions?).
> 
> I'll work on fix and let you test it - since the backtrace proof this
> is hyperv specific bug. That's why I was unable to reproduce it.
> 
> Thanks for the report!
> 
> Michal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160906/d1227f80/attachment-0001.htm>


More information about the libvir-list mailing list