Libelektra: KeySet рдХрд░реАрдм рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдирд╡ре░ 2019  ┬╖  32рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ElektraInitiative/libelektra

рдирдП рдПрд▓реЗрдХреНрдЯреНрд░рд╛рдб рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдореИрдВрдиреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред
рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирдП рд╣реИрдВрдбрд▓ рдмрдирд╛рдиреЗ рдФрд░ kdbGet() рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди ksClose() рдФрд░ kdbClose() рдмрд╛рдж рдХрднреА рднреА рдиреАрдЪреЗ рдирд╣реАрдВ рдЖрдПрдЧрд╛ред

рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╣ рдорд┐рдореАрдк рдХреИрд╢рд┐рдВрдЧ рдерд╛ - рдЬреЛ рд╢рд╛рдпрдж рдореЗрдореЛрд░реА рд▓реАрдХреНрд╕ рдХрд╛ рднреА рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдордПрдордПрдкреА рдореЗрдореЛрд░реА рдХреЛ рдХрднреА рднреА рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди -DPLUGINS="ALL;-cache" рд╕рд╛рде рдмрд┐рд▓реНрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реБрдИред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо

рдЬрд╛> = 1.13

рдореИрдВрдиреЗ рдЧреЛ-рдЗрд▓реЗрдХреНрдЯреНрд░рд╛ рд░реЗрдкреЛ рдореЗрдВ рджреЛ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдП

  1. TestKeySetMemory рдПрдХ рд▓реВрдк рдореЗрдВ рд╣реИрдВрдбрд▓ рдФрд░ kdbGets рдХреАрд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ 1 рд╕реЗрдХрдВрдб рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдмрд╛рдж - рддреБрд░рдВрдд рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд┐рд░ рд╕реЗ рдХреАрд╕реЗрдЯ + рд╣реИрдВрдбрд▓ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
  2. TestKeySetMemoryWithDelayedClose рднреА рд╣реИрдВрдбрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ kdbGets рд╕рд╛рде рдХреАрд╕реЗрдЯ рднрд░рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рд╣реИрдВрдбрд▓ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рд╕рднреА 20 рдХреАрд╕реЗрдЯреНрд╕ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рддрдХ рдХреАрд╕реЗрдЯ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЗрд▓реЗрдХреНрдЯреНрд░рд╛рдб рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдг htop рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреА рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж 20 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг, рдЬреЛ рддреБрд░рдВрдд рд╣реИрдВрдбрд▓ рдФрд░ рдХреАрд╕реЗрдЯ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдХреА рд▓рдВрдмрд╛рдИ рдкрд░ рдЙрд╕реА рдореЗрдореЛрд░реА рдлреБрдЯ рдкреНрд░рд┐рдВрдЯ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреАрд╕реЗрдЯ рдХреЗ test рд▓реЛрдб тАЩрд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╣реИрдВрдбрд▓ рдФрд░ рдХреАрд╕реЗрдЯ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдХрднреА рднреА рдХрд┐рд╕реА рднреА рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдФрд░ 20 рд╕реЗрдХрдВрдб рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреАред

рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд╣реВрдБ рдХрд┐ рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд▓рдЧ рдХреНрдпреЛрдВ рд╣реИред

рдЖрдк go-elektra рд░реЗрдкреЛ рдХреА рдХреНрд▓реЛрдирд┐рдВрдЧ рдХрд░рдХреЗ рдФрд░ рдЗрди рджреЛрдиреЛрдВ рдХрдорд╛рдВрдбреЛрдВ рдХреЛ ./kdb рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЪрд▓рд╛рдХрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

PKG_CONFIG_PATH=<PATH TO elektra.pc FILE> go test  -run "^(TestKeySetMemory)\$"

PKG_CONFIG_PATH=<PATH TO elektra.pc FILE> go test  -run "^(TestKeySetMemoryWithDelayedClose)\$"

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо

kdbClose рдФрд░ ksClose рдмрд╛рдж рдореЗрдореЛрд░реА рдлрд╝реНрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо

рд╕реНрдореГрддрд┐ рдореБрдХреНрдд рдирд╣реАрдВ рд╣реЛ рдкрд╛рддреА

рдкреНрд░рдгрд╛рд▓реА рдХреА рдЬрд╛рдирдХрд╛рд░реА

  • Elektra рд╕рдВрд╕реНрдХрд░рдг: рдорд╛рд╕реНрдЯрд░
  • рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо: рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕
  • рдирд╡реАрдирддрдо рдЧреЛ-рдЗрд▓реЗрдХреНрдЯреНрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг
bug urgent work in progress

рд╕рднреА 32 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Https://github.com/ElektraInitiative/libelektra/issues/3140 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рд╣рдорд╛рд░реЗ рд╡реИрдз рдФрд░ рдПрдПрд╕рдПрдПрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдлрд┐рд╕рд▓ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рд╕реА рдореЗрдВ рд╕рдорд╛рди рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдПрдордПрдордПрдкреА рдХреЗ рд╕рд╛рде рднреА рдореИрдВ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЦрд╛рд░рд┐рдЬ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╣реАрдВ рд▓реАрдХ рдирд╣реАрдВ рд╣реИрдВ?

рд╣рд╛рдВ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ - рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ C рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╡реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдЯреЗрд╕реНрдЯ рдХреЗ рдХреБрд▓ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ рдХрд┐ рдореЗрдореЛрд░реА рдХрд╛ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕реА рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореЗрд░рд╛ рд╕рдВрджреЗрд╣ рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реЗрдлрд░реА рдХрд╛рдЙрдВрдЯрд░ != 0 , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ 0 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реА рдПрдкреАрдЖрдИ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдореЗрдореЗрд▓ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд╢рд╛рдпрдж рдПрдХ рдЫреЛрдЯрд╛ рд╕реА рдЙрджрд╛рд╣рд░рдг рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд░рд┐рд╕рд╛рд╡ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ? рдореИрдВ benchmarks/kdb.c рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╡рд╣рд╛рдВ рдХреЛрдИ рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд▓реАрдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред

рдореБрджреНрджреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдпрд╣рд╛рдБ рдкреВрд░реА рддрд░рд╣ рд╕реЗ @mpranj рд╕реЗ рд╕рд╣рдордд рд╣реВрдБ, рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рднрд╛рд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдХреБрдЫ рднреА рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд╢рд╛рдпрдж рдПрдХ рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЗ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдХреЙрд▓ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ? рдПрдХ рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рд╣реЛ рдЬрд╛рдП, рд╣рдо рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Btwред рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореИрдВ рдХрд╛рдлреА рдкрд╣рд▓реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛: # 3159

рдореИрдВ рдХрд▓ рддрдХ рд╕реА рдореЗрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛

рдореИрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕ рдореБрджреНрджреЗ reproduced рдпрд╣рд╛рдБ ред benchmarks/memoryleak.c рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рдПрдВ рдФрд░ рдХреАрд╕реЗрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдореЗрдореЛрд░реА рдХреЛ рджреЗрдЦреЗрдВ - рдФрд░ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рдкрд░ рдиреАрдЪреЗ рди рдЬрд╛рдПрдВред

DB рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд░рд╛рд╢рд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ .. рдореИрдВрдиреЗ рдЗрд╕реЗ 100k рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред

рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдПрдХ рдирдЬрд░ рдорд╛рд░ рд▓реВрдЧрд╛рдВред

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рд░рд┐рд╕рд╛рд╡ рд╣реИ, рдЖрдкрдХреЛ рдкреИрд░реЗрдВрдЯ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
https://github.com/raphi011/libelektra/blob/afcbcf5c8138be8de6ba9b1a9e559bc673ff887f/benchmarks/mororyleak.c#L22

рдпрд╣ рдЫреЛрдЯрд╛ рд░рд┐рд╕рд╛рд╡ рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдЕрд╡рд▓реЛрдХрдиреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред

рдПрдХ рддрд░рдл рдзреНрдпрд╛рди рджреЗрдВ рдХреЗ рд░реВрдк рдореЗрдВ: mmap рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░, рдореИрдВ рдХреИрд╢ рдХреЗ рдмрд┐рдирд╛ рд╕реЗ рднреА рдХрдо рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╢рд╛рдпрдж рдореБрдЭреЗ рдЗрд╕реЗ рдЕрдкрдиреА рдереАрд╕рд┐рд╕ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдореБрд╕реНрдХрд╛рди:ред (рдХреИрд╢: ~ реирежреж рдПрдо рдмрдирд╛рдо рдиреЛ рдХреИрд╢: ~ ремрежреж рдПрдо)

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо dlopen() / dlclose() рдорд╛рдзреНрдпрдо рд╕реЗ "рд▓реАрдХ" рдХрд░ рд░рд╣реЗ рд╣реИрдВред kdb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди kdb-static (рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрд╢) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╣реАрдВ:

valgrind --leak-check=full --show-leak-kinds=all ./bin/kdb ls user
[...]
==48451== 1,192 bytes in 1 blocks are still reachable in loss record 6 of 6
==48451==    at 0x483AB1A: calloc (vg_replace_malloc.c:762)
==48451==    by 0x400BB11: _dl_new_object (in /usr/lib64/ld-2.30.so)
==48451==    by 0x400642F: _dl_map_object_from_fd (in /usr/lib64/ld-2.30.so)
==48451==    by 0x4009315: _dl_map_object (in /usr/lib64/ld-2.30.so)
==48451==    by 0x400DB24: openaux (in /usr/lib64/ld-2.30.so)
==48451==    by 0x4DFE8C8: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
==48451==    by 0x400DF6A: _dl_map_object_deps (in /usr/lib64/ld-2.30.so)
==48451==    by 0x4013AC3: dl_open_worker (in /usr/lib64/ld-2.30.so)
==48451==    by 0x4DFE8C8: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
==48451==    by 0x401363D: _dl_open (in /usr/lib64/ld-2.30.so)
==48451==    by 0x496139B: dlopen_doit (in /usr/lib64/libdl-2.30.so)
==48451==    by 0x4DFE8C8: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
[...]

рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХрдИ рд╣реИрдВрдбрд▓ рдЕрдзрд┐рдХ рд╣реИрдВрдбрд▓ рдЦреЛрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

==48735== 72,704 bytes in 1 blocks are still reachable in loss record 8 of 8
==48735==    at 0x483880B: malloc (vg_replace_malloc.c:309)
==48735==    by 0x4F860A9: ??? (in /usr/lib64/libstdc++.so.6.0.27)
==48735==    by 0x400FD59: call_init.part.0 (in /usr/lib64/ld-2.30.so)
==48735==    by 0x400FE60: _dl_init (in /usr/lib64/ld-2.30.so)
==48735==    by 0x4013DBD: dl_open_worker (in /usr/lib64/ld-2.30.so)
==48735==    by 0x4A088C8: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
==48735==    by 0x401363D: _dl_open (in /usr/lib64/ld-2.30.so)
==48735==    by 0x48C739B: dlopen_doit (in /usr/lib64/libdl-2.30.so)
==48735==    by 0x4A088C8: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
==48735==    by 0x4A08962: _dl_catch_error (in /usr/lib64/libc-2.30.so)
==48735==    by 0x48C7B08: _dlerror_run (in /usr/lib64/libdl-2.30.so)
==48735==    by 0x48C7429: dlopen@@GLIBC_2.2.5 (in /usr/lib64/libdl-2.30.so)

рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЗрдбреАрдмреА рд╣реИрдВрдбрд▓ рдЦреЛрд▓ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдкреНрд░рднрд╛рд╡ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЗрдореЛрд░реА рдЦрдкрдд рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╣реИрдВрдбрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред @ raphi011 рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП kdb-static рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЛ elektra-static рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЙрд╕реА рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛:

==54836== HEAP SUMMARY:
==54836==     in use at exit: 0 bytes in 0 blocks
==54836==   total heap usage: 6,456,631 allocs, 6,456,631 frees, 272,753,180 bytes allocated
==54836== 
==54836== All heap blocks were freed -- no leaks are possible
==54836== 
==54836== For lists of detected and suppressed errors, rerun with: -s
==54836== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

рдореБрдЭреЗ рдлрд┐рд▓рд╣рд╛рд▓ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо dlopen() рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдирдП elektrad рд╕рд░реНрд╡рд░ рдХрд╛ рд╕рд░рд▓реАрдХреГрдд рдЕрдиреБрдХрд░рдг рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрдИ рд╣реИрдВрдбрд▓ (рд╕рдВрдШрд░реНрд╖ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЖрджрд┐) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ рдирд╣реАрдВ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ Key / KeySets рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдореВрд▓ рдХреБрдВрдЬреА рдХреЛ "system" рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рдХрдо рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдмрд╣реБрдд рдХрдо рд╣реИред

@ markus2330 рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
https://gist.github.com/mpranj/bbdf00af308ed3f5b3f0f35bc832756f~~

рдореИрдВ рдЙрд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдк HTOP рдХреЗ рд╕рд╛рде рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЬрд┐рд╕реНрдЯ рд╕реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рддреЛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдПрд▓реЗрдХреНрдЯреНрд░рд╛ рдХреА рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХрднреА рдХрдо рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ?

рддреЛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдПрд▓реЗрдХреНрдЯреНрд░рд╛ рдХреА рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХрднреА рдХрдо рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ?

рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЗрд▓реЗрдХреНрдЯреНрд░рд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╣реА рдордирд╛рдпрд╛ред рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рдХрд┐ рдореЗрд░рд╛ рдЕрд╡рд▓реЛрдХрди рдХреЗрд╡рд▓ рд╡реИрд▓рдЧреНрд░рд╛рдЗрдВрдб рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рдкрд░ рд╣реА рд╕рддреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЕрдВрдд рддрдХ рд╡реЗрд▓рдЧреНрд░рд┐рдВрдб рдлреНрд░реА () рдЖрдИрдПрдирдЬреА рди рд╣реЛред

https://stackoverflow.com/questions/40917024/memory-leak-after-using-calloc-and-free

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕реВрдЪрдХ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕реВрдЪрдХ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ

рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡реИрд▓рдЧреНрд░рд╛рдЗрдВрдб, рдЬрд┐рд╕реНрдЯ рдореЗрдВ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдореБрдлреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡реЗрд▓рдЧреНрд░рд┐рдВрдб рдХреЗ рдЕрдВрджрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдореЗрдореЛрд░реА рдореБрдлреНрдд рд╣реИ () рдбреА рдмрд╣реБрдд рддреБрд░рдВрддред

рдХреНрдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ: рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрдк benchmark_createkeys рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрдпрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ KDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рд╕рдВрд╕рд╛рдзрди рднреА рдореБрдлреНрдд рдирд╣реАрдВ рд╣реИрдВ () рддреБрд░рдВрдд, рд▓реЗрдХрд┐рди рд╡реИрд▓реЗрдЧреНрд░рд╛рдЗрдВрдб рдмрд┐рд▓реНрдХреБрд▓ 0 рд▓реАрдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдореИрдВ рдЪрдХрд░рд╛ рдЧрдпрд╛ред

@ markus2330 рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?

рдХреЗрд╡рд▓ KeySets рдХреЗ рд╕рд╛рде рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдИ рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (KDB рдХреЗ рд╕рд╛рде рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдм рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓реАрдХ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред)

@ raphi011 рдХреНрдпрд╛ рдЖрдк рдПрдХ PR рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдХреА рдУрд░

https://github.com/raphi011/libelektra/tree/memoryleak рдпрд╣рд╛рдВ рдЖрдк рдЬрд╛рдПрдВред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдХреЗ рдпрд╣ рдмрддрд╛рдпрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ ksDel рджреНрд╡рд╛рд░рд╛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдореБрдЦ рд╕рдВрджрд░реНрдн > 0 ред

рдпрджрд┐ рдЖрдк рдмрд┐рдирд╛ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ рдореБрдХреНрдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рд░реЗрдкреЛ рдХрд╛ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

CMake Error: Error processing file: /home/markus/Projekte/Elektra/repos/libelektra/scripts/cmake/ElektraManpage.cmake
make[2]: *** [src/bindings/intercept/env/CMakeFiles/man-kdb-elektrify-getenv.dir/build.make:61: ../doc/man/man1/kdb-elektrify-getenv.1] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:17236: src/bindings/intercept/env/CMakeFiles/man-kdb-elektrify-getenv.dir/all] Fehler 2

рдХреНрдпрд╛ рдЖрдк рдореБрдЦреНрдп рдорд╛рд╕реНрдЯрд░ рдХреЛ рдЫреВрдЯ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

рдФрд░ рдХреГрдкрдпрд╛ рдПрдХ рдкреАрдЖрд░ рдХрд░реЗрдВ, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдлрд┐рд░ред

рдпрджрд┐ рдЖрдк рдмрд┐рдирд╛ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ рдореБрдХреНрдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдПрдХ рд░рди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдпрд╣рд╛рдВ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрдк рдмреЗрдВрдЪрдорд╛рд░реНрдХ_рдХреНрд░рд┐рдПрдЯреЗрдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрдпрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреЗрдбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рд╕рдВрд╕рд╛рдзрди рднреА рдореБрдлреНрдд рдирд╣реАрдВ рд╣реИрдВ () рддреБрд░рдВрдд, рд▓реЗрдХрд┐рди рд╡реИрд▓реЗрдЧреНрд░рд╛рдЗрдВрдб рдмрд┐рд▓реНрдХреБрд▓ 0 рд▓реАрдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдореИрдВ рдЪрдХрд░рд╛ рдЧрдпрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЗрд╕ рдЯреНрд░реЗрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдХреАрд╕реЗрдЯреНрд╕ рд╣реИрдВред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рджрдорди рдЬреЛрдбрд╝рд╛?

рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ: рдПрдордПрдордПрдкреА рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдХреИрд╢ рдХреЗ рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЛ рднреА рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдореБрдЭреЗ рдЗрд╕реЗ рдЕрдкрдиреА рдереАрд╕рд┐рд╕ рдореБрд╕реНрдХрд╛рди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред (рдХреИрд╢: ~ реирежреж рдПрдо рдмрдирд╛рдо рдиреЛ рдХреИрд╢: ~ ремрежреж рдПрдо)

рдпреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред

рдпрд╣рд╛рдВ рдЖрдк рдЬрд╛рдПрдВ: https://github.com/ElektraInitiative/libelektra/pull/3172

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рджрдорди рдЬреЛрдбрд╝рд╛?

рдЬрдм рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП, рддреЛ рд╡рд╛рд▓реНрдЧреНрд░рд┐рдВрдб рдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджрдорди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕реВрдЪрдирд╛ рджреА, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдорд╛рдЗрд▓реЗрдЬ рдореЗрдВ рдореЗрд░реА рднрд┐рдиреНрдирддрд╛ рдереАред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рджреМрд░рд╛рди рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реАред рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдореЗрдЯрд╛ рдХреАрд╕реЗрдЯ рдХрд╛ рдЙрддреНрд╕реБрдХ рдЖрд╡рдВрдЯрди рд╣реИред рдореЗрд░реА рд╢рд╛рдЦрд╛ рдкрд░ рдПрдХ рдЧрдВрджреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдЙрддреНрд╕реБрдХ рдореЗрдЯрд╛ рдХреАрд╕реЗрдЯ рдХреЛ рд╣рдЯрд╛рдХрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЛ рдЬрд▓реНрджреА рд╕реЗ ksDel () рдХреЗ рдмрд╛рдж рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ # 3142 рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕ рдХреЛрдб рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдареАрдХ рд╣реИ, рддреЛ рд╣рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ # 3142 рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ!

@ raphi011 рдиреЗ # 3081 рд╕реЗ рдкрд╣рд▓реЗ рднреА рд╕рдорд╕реНрдпрд╛

3142 рдЕрдм рдорд░реНрдЬ рд╣реЛ рдЧрдпрд╛ рд╣реИред @ raphi011 рдЖрдк рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣реИ?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рд╛рдБ

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдХрд╛ рд╕рдорд╛рдзрд╛рди / рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЕрдм ~ 2GB рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЦреЛрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ рдпрд╣ рдЙрд╕реА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП> 20GB рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ред

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдХрд╛ рд╕рдорд╛рдзрд╛рди / рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЕрдм ~ 2GB рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЦреЛрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ рдпрд╣ рдЙрд╕реА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП> 20GB рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ред

рдореИрдВрдиреЗ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдЬ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ!

рд╕реНрдореГрддрд┐ рдЕрднреА рднреА рдореБрдХреНрдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИред

рдЖрдкрдХреЛ рд╣рд░ free (рдкрдврд╝реЗрдВ: ksDel ) рдХреЗ рдмрд╛рдж malloc_trim(0) рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЛ рддреБрд░рдВрдд рдУрдПрд╕ рдкрд░ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдордХрддрд╛ рд╣реИред рдпрд╣ "рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░" рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЖрдк рд▓реЛрдЧ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдУрд╣, рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдордЬрд╝рд╛ рд╣реИ рдФрд░ glibc рдореЗрдВ рдЦреБрджрд╛рдИ :-)

рдореИрдВрдиреЗ рдЖрдЧреЗ рдкрд░реАрдХреНрд╖рдг / рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП # 3183 рдмрдирд╛рдпрд╛ред

рдореБрдЭреЗ рдПрдХ рдореЗрдорд▓реИрдХ рдорд┐рд▓рд╛ (рдПрдХ kdbGet рд░рд┐рдЯрд░реНрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдореЗрдВ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред

рд▓реЗрдХрд┐рди "ksClose рдиреЗ 532 рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛" рдХреА рдмрдврд╝рддреА рд╕рдВрдЦреНрдпрд╛ рд╕рдВрднрд╡рддрдГ рдкреЗрд░реЗрдВрдЯреЗ рдореЗрдВ рдХреЗрд╡рд▓ рдЪреЗрддрд╛рд╡рдиреА рд╣реИред рдпрджрд┐ рдЖрдк NUM_RUNS рдХреЛ рдЙрдЪреНрдЪ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ 100, рдпрд╣ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдерд┐рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 100 рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХрддрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред "ksClose рдиреЗ 901 рдХреБрдВрдЬреА рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛"ред рдПрдХ рдкреЗрд░реЗрдВрдЯреЗрдХреА рдкреНрд░рддрд┐ рд╣реИрдВрдбрд▓ рд╣реЛрдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧреАред

# 3183 рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mpranj picture mpranj  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sanssecours picture sanssecours  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mpranj picture mpranj  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dominicjaeger picture dominicjaeger  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sanssecours picture sanssecours  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ