Pagefaulting in lock instruction

Tiago Jorge tjpj at lasige.di.fc.ul.pt
Wed May 4 23:04:12 CEST 2005


>>
>>##################################################
>>
>>here it is the dissassembled output...
>>
>>##################################################
>>
>><Consensus::startConsensus()>:
>>/home/tiago/l4/pkg/WOO/server/src/Consensus_udp.cc:178
>>01db6a50        push   %ebp
>>01db6a51        mov    %esp,%ebp
>>01db6a53        push   %edi
>>01db6a54        push   %esi
>>01db6a55        push   %ebx
>>01db6a56        sub    $0xc37c,%esp
>>01db6a5c        mov    8(%ebp),%ebx
>>/home/tiago/l4/include/l4/lock/lock.h:97
>>01db6a5f        lea    0xc3c8(%ebx),%eax
>>01db6a65        mov    %eax,0xffff3c84(%ebp) <<--- PAGE FAULT 
>>HERE!!!!!!!!!!!!
>>/home/tiago/l4/include/l4/lock/lock.h:98
>>01db6a6b        call   0x1dc0e80 <l4thread_myself>
>>/home/tiago/l4/include/l4/lock/lock.h:101
>>01db6a70        mov    0xffff3c84(%ebp),%ecx
>>/home/tiago/l4/include/l4/lock/lock.h:98
>>01db6a76        mov    %eax,0xffff3c80(%ebp)
>>/home/tiago/l4/include/l4/lock/lock.h:101
>>01db6a7c        test   %ecx,%ecx
>>01db6a7e        je     0x1db6aa6
>>
>>##################################################
>>
>>as of my inexperience with Fiasco debug issues... what might be causing 
>>this?
>>    
>>
>
>
>Looking at the asm I wonder how the object is initialized and where does
>it get its memory from?
>  
>
the object its initialized as a global variable of my main program...

###############################################
[...]

/**
 * sync stuff
 */

l4lock_t lock_running = L4LOCK_UNLOCKED,
         lock_decided = L4LOCK_UNLOCKED,
         lock_known_groups = L4LOCK_UNLOCKED,
         lock_group = L4LOCK_UNLOCKED,
         lock_operation = L4LOCK_UNLOCKED;

/**
 * consensus object
 */
Consensus cons;

[...]

###############################################

the constructor is empty...

###############################################

Consensus::Consensus ()
{
}

###############################################

and these are the servers that i boot at runtime:

title           Testes
root            (hd0,0)
kernel          /home/tiago/fiasco_builddir/rmgr -sigma0
modaddr         0x02000000
module          /home/tiago/fiasco_builddir/main -nokdb -nowait 
-serial_esc -comspeed 115200 -comport 1
module          /home/tiago/fiasco_builddir/sigma0
module          /home/tiago/fiasco_builddir/names
module          /home/tiago/fiasco_builddir/dm_phys
module          /home/tiago/fiasco_builddir/l4io
module          /home/tiago/fiasco_builddir/rtc
module          /home/tiago/fiasco_builddir/name_server
module          /home/tiago/fiasco_builddir/flips-lxdrv
module          /home/tiago/fiasco_builddir/mini_ifconfig eth0 
10.10.5.197 255.255.0.0 10.10.255.255
module          /home/tiago/fiasco_builddir/WOO 10.10.5.197 eth0
module          /home/tiago/fiasco_builddir/WOO_test

>And who's the pager of the object/thread?
>  
>
so i think the pager it's the default... so i don't know why the program 
it's goig to try and get the instruction at 0xffff3c84

thanks

Tiago




More information about the l4-hackers mailing list