Opened 11 years ago

Closed 11 years ago

#3172 closed bug (fixed)

registrar creating huge amounts of worker threads over time

Reported by: anevilyak Owned by: bonefish
Priority: normal Milestone: R1
Component: Servers/registrar Version: R1/pre-alpha1
Keywords: Cc: olive@…
Blocked By: Blocking:
Has a Patch: no Platform: All

Description

On my Haiku install that I've had running for close to a week now, I just noticed that registrar has an absolutely massive number of threads active that probably shouldn't be. I'm uncertain if I did anything specific to trigger this, or if it's due to a periodic task of some kind right now. They're mostly in state suspended, see as follows:

 thread           name      state prio   user  kernel semaphore
-----------------------------------------------------------------------
/boot/beos/system/servers/registrar (team 52) (uid 0) (gid 0)
     52      _roster_thread_ wait  10   11179   18453 _haiku_roster_port_(489)
     54    message deliverer  zzz  10   10754   13757 
     55         timer_thread wait  10  339113  105504 timer_thread control(496)
     56 authentication manager wait  10     233      68 registrar: auth manager(500)
     57            main_mime wait  10     279     261 main_mime(510)
     58 messaging command processor wait  15      44      21 messaging counter(520)
  55953 update_mime_info (s)  sus  10       0       0 
  56042 update_mime_info (s)  sus  10       0       0 
  56043 update_mime_info (s)  sus  10       0       0 
  56044 update_mime_info (s)  sus  10       0       0 
  56045 update_mime_info (s)  sus  10       0       0 
  56046 update_mime_info (s)  sus  10       0       0 
  56047 update_mime_info (s)  sus  10       0       0 
  56048 update_mime_info (s)  sus  10       0       0 
  56049 update_mime_info (s)  sus  10       0       0 
  56050 update_mime_info (s)  sus  10       0       0 
  56051 update_mime_info (s)  sus  10       0       0 
  56052 update_mime_info (s)  sus  10       0       0 
  56053 update_mime_info (s)  sus  10       0       0 
  56054 update_mime_info (s)  sus  10       0       0 
  56056 update_mime_info (s)  sus  10       0       0 
  56057 update_mime_info (s)  sus  10       0       0 
  56058 update_mime_info (s)  sus  10       0       0 
  56059 create_app_meta_mime (s)  sus  10       0       0 
  56060 update_mime_info (s)  sus  10       0       0 
  56061 update_mime_info (s)  sus  10       0       0 
  56062 update_mime_info (s)  sus  10       0       0 
  56063 update_mime_info (s)  sus  10       0       0 
  56064 update_mime_info (s)  sus  10       0       0 
  56065 update_mime_info (s)  sus  10       0       0 
  56066 update_mime_info (s)  sus  10       0       0 
  56067 update_mime_info (s)  sus  10       0       0 
  56068 create_app_meta_mime (s)  sus  10       0       0 
  56069 update_mime_info (s)  sus  10       0       0 
  56070 update_mime_info (s)  sus  10       0       0 
  56071 update_mime_info (s)  sus  10       0       0 
  56072 update_mime_info (s)  sus  10       0       0 
  56073 update_mime_info (s)  sus  10       0       0 
  56074 update_mime_info (s)  sus  10       0       0 
  56075 update_mime_info (s)  sus  10       0       0 
  56076 update_mime_info (s)  sus  10       0       0 
  56077 update_mime_info (s)  sus  10       0       0 
  56078 create_app_meta_mime (s)  sus  10       0       0 
  56079 update_mime_info (s)  sus  10       0       0 
  56081 update_mime_info (s)  sus  10       0       0 
  56082 update_mime_info (s)  sus  10       0       0 
  56083 update_mime_info (s)  sus  10       0       0 
  56085 update_mime_info (s)  sus  10       0       0 
  56086 update_mime_info (s)  sus  10       0       0 
  56087 update_mime_info (s)  sus  10       0       0 
  56088 update_mime_info (s)  sus  10       0       0 
  56089 update_mime_info (s)  sus  10       0       0 
  56091 update_mime_info (s)  sus  10       0       0 
  56092 update_mime_info (s)  sus  10       0       0 
  56093 update_mime_info (s)  sus  10       0       0 
  56094 update_mime_info (s)  sus  10       0       0 
  56095 update_mime_info (s)  sus  10       0       0 
  56097 create_app_meta_mime (s)  sus  10       0       0 
  56098 update_mime_info (s)  sus  10       0       0 
  56099 update_mime_info (s)  sus  10       0       0 
  56100 update_mime_info (s)  sus  10       0       0 
  56101 create_app_meta_mime (s)  sus  10       0       0 
  56103 update_mime_info (s)  sus  10       0       0 
  56104 update_mime_info (s)  sus  10       0       0 
  56105 update_mime_info (s)  sus  10       0       0 
  56106 update_mime_info (s)  sus  10       0       0 
  56107 update_mime_info (s)  sus  10       0       0 
  56108 create_app_meta_mime (s)  sus  10       0       0 
  56109 update_mime_info (s)  sus  10       0       0 
  56110 create_app_meta_mime (s)  sus  10       0       0 
  56111 update_mime_info (s)  sus  10       0       0 
  56112 update_mime_info (s)  sus  10       0       0 
  56113 create_app_meta_mime (s)  sus  10       0       0 
  56114 create_app_meta_mime (s)  sus  10       0       0 
  56115 create_app_meta_mime (s)  sus  10       0       0 
  56116 create_app_meta_mime (s)  sus  10       0       0 
  56117 update_mime_info (s)  sus  10       0       0 
  56121 create_app_meta_mime (s)  sus  10       0       0 
  56145 create_app_meta_mime (s)  sus  10       0       0 
  56146 update_mime_info (s)  sus  10       0       0 
  56163 update_mime_info (s)  sus  10       0       0 
  56172 create_app_meta_mime (s)  sus  10       0       0 
  56173 update_mime_info (s)  sus  10       0       0 
  56174 create_app_meta_mime (s)  sus  10       0       0 
  56175 create_app_meta_mime (s)  sus  10       0       0 
  56176 create_app_meta_mime (s)  sus  10       0       0 
  56177 create_app_meta_mime (s)  sus  10       0       0 
  56178 create_app_meta_mime (s)  sus  10       0       0 
  56179 update_mime_info (s)  sus  10       0       0 
  56180 create_app_meta_mime (s)  sus  10       0       0 
  56181 update_mime_info (s)  sus  10       0       0 
  56182 update_mime_info (s)  sus  10       0       0 
  56183 update_mime_info (s)  sus  10       0       0 
  56184 update_mime_info (s)  sus  10       0       0 
  56185 create_app_meta_mime (s)  sus  10       0       0 
  56186 create_app_meta_mime (s)  sus  10       0       0 
  56187 create_app_meta_mime (s)  sus  10       0       0 
  56188 create_app_meta_mime (s)  sus  10       0       0 
  56189 update_mime_info (s)  sus  10       0       0 
  56190 create_app_meta_mime (s)  sus  10       0       0 
  56191 create_app_meta_mime (s)  sus  10       0       0 
  56192 create_app_meta_mime (s)  sus  10       0       0 
  56193 update_mime_info (s)  sus  10       0       0 
  56194 update_mime_info (s)  sus  10       0       0 
  56210 update_mime_info (s)  sus  10       0       0 
  56211 create_app_meta_mime (s)  sus  10       0       0 
  56213 update_mime_info (s)  sus  10       0       0 
  56214 create_app_meta_mime (s)  sus  10       0       0 
  56215 create_app_meta_mime (s)  sus  10       0       0 
  56216 update_mime_info (s)  sus  10       0       0 
  56217 update_mime_info (s)  sus  10       0       0 
  56218 create_app_meta_mime (s)  sus  10       0       0 
  56219 update_mime_info (s)  sus  10       0       0 
  56220 update_mime_info (s)  sus  10       0       0 
  56221 update_mime_info (s)  sus  10       0       0 
  56222 create_app_meta_mime (s)  sus  10       0       0 
  56223 update_mime_info (s)  sus  10       0       0 
  56224 update_mime_info (s)  sus  10       0       0 
  56225 create_app_meta_mime (s)  sus  10       0       0 
  56226 update_mime_info (s)  sus  10       0       0 
  56227 create_app_meta_mime (s)  sus  10       0       0 
  56228 update_mime_info (s)  sus  10       0       0 
  56229 update_mime_info (s)  sus  10       0       0 
  56230 create_app_meta_mime (s)  sus  10       0       0 
  56231 update_mime_info (s)  sus  10       0       0 
  56232 update_mime_info (s)  sus  10       0       0 
  56233 create_app_meta_mime (s)  sus  10       0       0 
  56234 update_mime_info (s)  sus  10       0       0 
  56235 create_app_meta_mime (s)  sus  10       0       0 
  56236 update_mime_info (s)  sus  10       0       0 
  56237 update_mime_info (s)  sus  10       0       0 
  56238 create_app_meta_mime (s)  sus  10       0       0 
  56239 update_mime_info (s)  sus  10       0       0 
  56240 create_app_meta_mime (s)  sus  10       0       0 
  56241 update_mime_info (s)  sus  10       0       0 
  56242 create_app_meta_mime (s)  sus  10       0       0 
  56243 update_mime_info (s)  sus  10       0       0 
  56244 update_mime_info (s)  sus  10       0       0 
  56245 create_app_meta_mime (s)  sus  10       0       0 
  56246 update_mime_info (s)  sus  10       0       0 
  56247 create_app_meta_mime (s)  sus  10       0       0 
  56248 update_mime_info (s)  sus  10       0       0 
  56249 update_mime_info (s)  sus  10       0       0 
  56250 create_app_meta_mime (s)  sus  10       0       0 
  56251 update_mime_info (s)  sus  10       0       0 
  56252 create_app_meta_mime (s)  sus  10       0       0 
  56253 update_mime_info (s)  sus  10       0       0 
  56254 update_mime_info (s)  sus  10       0       0 
  56255 create_app_meta_mime (s)  sus  10       0       0 
  56256 update_mime_info (s)  sus  10       0       0 
  56257 create_app_meta_mime (s)  sus  10       0       0 
  56258 update_mime_info (s)  sus  10       0       0 
  56259 update_mime_info (s)  sus  10       0       0 
  56260 create_app_meta_mime (s)  sus  10       0       0 
  56261 update_mime_info (s)  sus  10       0       0 
  56262 create_app_meta_mime (s)  sus  10       0       0 
  56263 update_mime_info (s)  sus  10       0       0 
  56264 update_mime_info (s)  sus  10       0       0 
  56265 create_app_meta_mime (s)  sus  10       0       0 
  56266 update_mime_info (s)  sus  10       0       0 
  56267 create_app_meta_mime (s)  sus  10       0       0 
  56268 update_mime_info (s)  sus  10       0       0 
  56269 create_app_meta_mime (s)  sus  10       0       0 
  56270 update_mime_info (s)  sus  10       0       0 
  56271 create_app_meta_mime (s)  sus  10       0       0 
  56272 create_app_meta_mime (s)  sus  10       0       0 
  56273 create_app_meta_mime (s)  sus  10       0       0 
  56274 create_app_meta_mime (s)  sus  10       0       0 
  56275 create_app_meta_mime (s)  sus  10       0       0 
  56276 create_app_meta_mime (s)  sus  10       0       0 
  56277 create_app_meta_mime (s)  sus  10       0       0 
  56278 create_app_meta_mime (s)  sus  10       0       0 
  56279 create_app_meta_mime (s)  sus  10       0       0 
  56280 create_app_meta_mime (s)  sus  10       0       0 
  56281 create_app_meta_mime (s)  sus  10       0       0 
  56282 create_app_meta_mime (s)  sus  10       0       0 
  56283 create_app_meta_mime (s)  sus  10       0       0 
  56284 create_app_meta_mime (s)  sus  10       0       0 
  56285 create_app_meta_mime (s)  sus  10       0       0 
  56286 create_app_meta_mime (s)  sus  10       0       0 
  56287 create_app_meta_mime (s)  sus  10       0       0 
  56288 create_app_meta_mime (s)  sus  10       0       0 
  56290 create_app_meta_mime (s)  sus  10       0       0 
  56291 create_app_meta_mime (s)  sus  10       0       0 
  56292 create_app_meta_mime (s)  sus  10       0       0 
  56293 create_app_meta_mime (s)  sus  10       0       0 
  56294 create_app_meta_mime (s)  sus  10       0       0 
  56295 create_app_meta_mime (s)  sus  10       0       0 
  56296 create_app_meta_mime (s)  sus  10       0       0 
  56297 create_app_meta_mime (s)  sus  10       0       0 
  56298 create_app_meta_mime (s)  sus  10       0       0 
  56299 create_app_meta_mime (s)  sus  10       0       0 
  56300 create_app_meta_mime (s)  sus  10       0       0 
  56301 create_app_meta_mime (s)  sus  10       0       0 
  56302 create_app_meta_mime (s)  sus  10       0       0 
  56303 create_app_meta_mime (s)  sus  10       0       0 
  56304 create_app_meta_mime (s)  sus  10       0       0 
  56305 create_app_meta_mime (s)  sus  10       0       0 
  56306 create_app_meta_mime (s)  sus  10       0       0 
  56307 create_app_meta_mime (s)  sus  10       0       0 
  56308 create_app_meta_mime (s)  sus  10       0       0 
  56309 create_app_meta_mime (s)  sus  10       0       0 
  56310 create_app_meta_mime (s)  sus  10       0       0 
  56311 create_app_meta_mime (s)  sus  10       0       0 
  56312 create_app_meta_mime (s)  sus  10       0       0 
  56313 create_app_meta_mime (s)  sus  10       0       0 
  56326 create_app_meta_mime (s)  sus  10       0       0 
  56327 create_app_meta_mime (s)  sus  10       0       0 
  56328 create_app_meta_mime (s)  sus  10       0       0 
  56329 create_app_meta_mime (s)  sus  10       0       0 
  56330 create_app_meta_mime (s)  sus  10       0       0 
  56331 create_app_meta_mime (s)  sus  10       0       0 
  56332 create_app_meta_mime (s)  sus  10       0       0 
  56333 create_app_meta_mime (s)  sus  10       0       0 
  56334 create_app_meta_mime (s)  sus  10       0       0 
  56335 create_app_meta_mime (s)  sus  10       0       0 
  56336 create_app_meta_mime (s)  sus  10       0       0 
  56337 create_app_meta_mime (s)  sus  10       0       0 
  56338 create_app_meta_mime (s)  sus  10       0       0 
  56339 create_app_meta_mime (s)  sus  10       0       0 
  56340 create_app_meta_mime (s)  sus  10       0       0 
  56341 create_app_meta_mime (s)  sus  10       0       0 
  56342 create_app_meta_mime (s)  sus  10       0       0 
  56343 create_app_meta_mime (s)  sus  10       0       0 
  56344 create_app_meta_mime (s)  sus  10       0       0 
  56345 create_app_meta_mime (s)  sus  10       0       0 
  56346 create_app_meta_mime (s)  sus  10       0       0 
  56347 create_app_meta_mime (s)  sus  10       0       0 
  56348 create_app_meta_mime (s)  sus  10       0       0 
  56349 create_app_meta_mime (s)  sus  10       0       0 
  56350 create_app_meta_mime (s)  sus  10       0       0 
  56351 create_app_meta_mime (s)  sus  10       0       0 
  56352 create_app_meta_mime (s)  sus  10       0       0 
  56353 create_app_meta_mime (s)  sus  10       0       0 
  56354 create_app_meta_mime (s)  sus  10       0       0 
  56355 create_app_meta_mime (s)  sus  10       0       0 
  56356 create_app_meta_mime (s)  sus  10       0       0 
  56357 create_app_meta_mime (s)  sus  10       0       0 
  56358 create_app_meta_mime (s)  sus  10       0       0 
  56359 create_app_meta_mime (s)  sus  10       0       0 
  56360 create_app_meta_mime (s)  sus  10       0       0 
  56361 create_app_meta_mime (s)  sus  10       0       0 
  56362 create_app_meta_mime (s)  sus  10       0       0 
  56363 create_app_meta_mime (s)  sus  10       0       0 
  56364 create_app_meta_mime (s)  sus  10       0       0 
  56365 create_app_meta_mime (s)  sus  10       0       0 
  56366 create_app_meta_mime (s)  sus  10       0       0 
  56367 create_app_meta_mime (s)  sus  10       0       0 
  56368 create_app_meta_mime (s)  sus  10       0       0 
  56369 create_app_meta_mime (s)  sus  10       0       0 
  56370 create_app_meta_mime (s)  sus  10       0       0 
  56374 create_app_meta_mime (s)  sus  10       0       0 
  56375 create_app_meta_mime (s)  sus  10       0       0 
  56376 create_app_meta_mime (s)  sus  10       0       0 
  56377 create_app_meta_mime (s)  sus  10       0       0 
  56378 create_app_meta_mime (s)  sus  10       0       0 
  56379 create_app_meta_mime (s)  sus  10       0       0 
  56385 create_app_meta_mime (s)  sus  10       0       0 
  56386 create_app_meta_mime (s)  sus  10       0       0 
  56387 create_app_meta_mime (s)  sus  10       0       0 
  56388 create_app_meta_mime (s)  sus  10       0       0 
  56389 create_app_meta_mime (s)  sus  10       0       0 
  56390 create_app_meta_mime (s)  sus  10       0       0 
  56391 create_app_meta_mime (s)  sus  10       0       0 
  56414 create_app_meta_mime (s)  sus  10       0       0 
  56415 create_app_meta_mime (s)  sus  10       0       0 
  56433 create_app_meta_mime (s)  sus  10       0       0 
  56434 create_app_meta_mime (s)  sus  10       0       0 
  56436 create_app_meta_mime (s)  sus  10       0       0 
  56437 create_app_meta_mime (s)  sus  10       0       0 
  56438 create_app_meta_mime (s)  sus  10       0       0 
  56439 create_app_meta_mime (s)  sus  10       0       0 
  56442 create_app_meta_mime (s)  sus  10       0       0 
  56443 create_app_meta_mime (s)  sus  10       0       0 
  56444 create_app_meta_mime (s)  sus  10       0       0 
  56446 create_app_meta_mime (s)  sus  10       0       0 
  56447 create_app_meta_mime (s)  sus  10       0       0 
  56448 create_app_meta_mime (s)  sus  10       0       0 
  56449 create_app_meta_mime (s)  sus  10       0       0 
  56450 create_app_meta_mime (s)  sus  10       0       0 
  56451 create_app_meta_mime (s)  sus  10       0       0 
  56452 create_app_meta_mime (s)  sus  10       0       0 
  56453 create_app_meta_mime (s)  sus  10       0       0 
  56454 create_app_meta_mime (s)  sus  10       0       0 
  56480 create_app_meta_mime (s)  sus  10       0       0 
  56483 create_app_meta_mime (s)  sus  10       0       0 
  56484 update_mime_info (s)  sus  10       0       0 
  56485 update_mime_info (s)  sus  10       0       0 
  56491 update_mime_info (s)  sus  10       0       0 
  56492 update_mime_info (s)  sus  10       0       0 
  56495 create_app_meta_mime (s)  sus  10       0       0 
  56496 create_app_meta_mime (s)  sus  10       0       0 
  56497 create_app_meta_mime (s)  sus  10       0       0 
  56498 create_app_meta_mime (s)  sus  10       0       0 
  56499 create_app_meta_mime (s)  sus  10       0       0 
  56512 create_app_meta_mime (s)  sus  10       0       0 
  56521 create_app_meta_mime (s)  sus  10       0       0 
  56522 create_app_meta_mime (s)  sus  10       0       0 
  56523 create_app_meta_mime (s)  sus  10       0       0 
  56524 create_app_meta_mime (s)  sus  10       0       0 
  56525 create_app_meta_mime (s)  sus  10       0       0 
  56526 create_app_meta_mime (s)  sus  10       0       0 
  56527 create_app_meta_mime (s)  sus  10       0       0 
  56528 create_app_meta_mime (s)  sus  10       0       0 
  56533 create_app_meta_mime (s)  sus  10       0       0 
  56534 create_app_meta_mime (s)  sus  10       0       0 
  56535 create_app_meta_mime (s)  sus  10       0       0 
  56536 create_app_meta_mime (s)  sus  10       0       0 
  56537 create_app_meta_mime (s)  sus  10       0       0 
  56538 create_app_meta_mime (s)  sus  10       0       0 
  56539 create_app_meta_mime (s)  sus  10       0       0 
  56540 create_app_meta_mime (s)  sus  10       0       0 
  56541 create_app_meta_mime (s)  sus  10       0       0 
  56542 create_app_meta_mime (s)  sus  10       0       0 
  56549 create_app_meta_mime (s)  sus  10       0       0 
  56550 create_app_meta_mime (s)  sus  10       0       0 
  56551 create_app_meta_mime (s)  sus  10       0       0 
  56552 create_app_meta_mime (s)  sus  10       0       0 
  56553 create_app_meta_mime (s)  sus  10       0       0 
  56559 create_app_meta_mime (s)  sus  10       0       0 
  56560 create_app_meta_mime (s)  sus  10       0       0 
  56561 create_app_meta_mime (s)  sus  10       0       0 
  56566 create_app_meta_mime (s)  sus  10       0       0 
  56575 create_app_meta_mime (s)  sus  10       0       0 
  56580 create_app_meta_mime (s)  sus  10       0       0 
  56582 create_app_meta_mime (s)  sus  10       0       0 
  56605 create_app_meta_mime (s)  sus  10       0       0 
  56616 create_app_meta_mime (s)  sus  10       0       0 
  56618 create_app_meta_mime (s)  sus  10       0       0 
  56621 create_app_meta_mime (s)  sus  10       0       0 
  56630 create_app_meta_mime (s)  sus  10       0       0 
  56634 create_app_meta_mime (s)  sus  10       0       0 
  56640 create_app_meta_mime (s)  sus  10       0       0 
  56641 create_app_meta_mime (s)  sus  10       0       0 
  56652 create_app_meta_mime (s)  sus  10       0       0 
  56654 create_app_meta_mime (s)  sus  10       0       0 
  56659 create_app_meta_mime (s)  sus  10       0       0 
  56660 create_app_meta_mime (s)  sus  10       0       0 
  56661 create_app_meta_mime (s)  sus  10       0       0 
  56666 create_app_meta_mime (s)  sus  10       0       0 
  56673 create_app_meta_mime (s)  sus  10       0       0 
  56675 create_app_meta_mime (s)  sus  10       0       0 
  56680 create_app_meta_mime (s)  sus  10       0       0 
  56684 create_app_meta_mime (s)  sus  10       0       0 
  56685 create_app_meta_mime (s)  sus  10       0       0 
  56687 create_app_meta_mime (s)  sus  10       0       0 
  56696 create_app_meta_mime (s)  sus  10       0       0 
  56701 create_app_meta_mime (s)  sus  10       0       0 
  56706 create_app_meta_mime (s)  sus  10       0       0 
  56707 create_app_meta_mime (s)  sus  10       0       0 

I still have the system running, so please let me know if there's any extra info I can gather.

Attachments (1)

registrarfix.patch (918 bytes ) - added by anevilyak 11 years ago.

Download all attachments as: .zip

Change History (9)

comment:1 by anevilyak, 11 years ago

Come to think of it, I might know what the culprit was as well: at one point I had a bit of a mental lapse and accidentally typed open when I meant to type grep. End result, I executed open search_term * in src/kits/tracker, though at the time I didn't think anything of it as all of the files did subsequently open successfully in Pe.

comment:2 by anevilyak, 11 years ago

I think I might have found part of the problem... RegistrarThreadManager returns an error (B_NO_MORE_THREADS) if its thread counter is higher than 12, though I'm uncertain as to why the threshold is so low. The problem is, in this case the thread has already been created by RegistrarThread's constructor, but it isn't subsequently resumed/killed by the d'tor or any other function in this case. My question is, is that thread limit even necessary? By the time it's checked the thread has already been spawned anyways, so I see no useful purpose to the limiter at that point, ignoring the fact that its cleanup logic is broken. Attached please find a diff that removes the check. Let me know if you see any issue with doing so. The one question I have is, without that check, all the code for tracking the thread count is more or less superfluous (and could probably be obtained from the STL container directly anyways), so would it be desirable to remove it?

by anevilyak, 11 years ago

Attachment: registrarfix.patch added

comment:3 by karmak, 11 years ago

Cc: olive@… added

comment:4 by anevilyak, 11 years ago

Any objection to me committing this patch? Or would you rather have the thread limit kept in place but fixed to work correctly? If so, is 12 still a reasonable thread limit?

in reply to:  4 comment:5 by bonefish, 11 years ago

Replying to anevilyak:

Sorry for the silence -- ATM I'm quite busy with work and have very little time for Haiku.

Any objection to me committing this patch? Or would you rather have the thread limit kept in place but fixed to work correctly? If so, is 12 still a reasonable thread limit?

I would actually prefer to keep a limit. After all the registrar is a system component and it shouldn't use resources unboundedly just because an application requests it. I guess the limit can be raised a bit, but too many concurrent MIME threads don't make that much sense either, since they will compete for disk access.

comment:6 by anevilyak, 11 years ago

No worries, I figured you were. In that case I'll see if I can't fix the limiting code to work correctly. Either that or maybe it'd be more opportune to rework that code to use a queue of requests and a few worker threads that operate off that queue instead? That way it wouldn't just fail a request if too many threads are currently active, though that might get a bit more complicated when synchronous requests come into play.

comment:7 by anevilyak, 11 years ago

The suspended threads problem is fixed in hrev28774. Long term though, I think this code needs a redesign, since the way it works now doesn't actually successfully enforce the limit, as it doesn't atomically add and compare the thread counter. Executing open * from a Terminal and watching registrar in ProcessController at the same time will confirm this. Let me know which route you'd like to take in terms of redoing this code. Leaving ticket open for now.

comment:8 by anevilyak, 11 years ago

Resolution: fixed
Status: newclosed

Fixed in hrev28775, though in the long term I'd say it's probably a good idea to open an enhancement ticket to redo this part of registar as a work queue with a fixed number of threads.

Note: See TracTickets for help on using tickets.