a thread seems to be looping in the uclibc function malloc.

yi yi windyi83 at hotmail.com
Tue Apr 27 15:01:19 UTC 2010


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


More information about the uClibc mailing list