enviroment :   mips   architecture linux 2.6.x,   with  uclibc 0.9.27  (the  
newest  version)
 
recently,i  met  a  problem:  a thread  which  uses  90%  of  cpu  resourc  is  
always  running 。 I  used    command  "cat  /proc/pid/stat"  to  show  run  
state of   the  thread. with  the   gnu  tool  fo  objdump, I  found  that   
the  thread's  instruction  was    in  "malloc"   function  in most of the 
cases,rarely   in  " erand48_r "  function.
when  it  was  in   " " erand48_r "  funtion ,it  would  quickly  return  to   
"malloc"   function  .  uclibc  is configured  with   MALLOC_STANDARD.  
"erand48_r"  isn't  called  explicitly   in  my  thread  code.  "erand48_r"  is 
 just   wrapped   to some  funtion    which  is   only   provide  some  
interface  to  application   and  isn't  called   by  any 
function  in  the  uclibc.If   thread  loops  in   my  main  code , i  can  
catch  that  some instructions (gained  from  objdum)  will  in  my  text  
section  ,other than always
in  Uclibc  dynamic  library.So  it  seems  that  thread  is   looping  in  the 
 "malloc"  routine.  Anybody  can  tell  me  the   mechanism  of   malloc.  
Will  the  malloc  routine  have  the  possibility  of    looping  inside  the  
"malloc"   routine?  Or  What  happened  to  my  thread?                        
              
_________________________________________________________________
Hotmail: Free, trusted and rich email service.
https://signup.live.com/signup.aspx?id=60969
_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to