)]}'
{"id":"openocd~master~I0dc8021cc3e21c5af619c71a1821a1afe9bffe78","project":"openocd","branch":"master","attention_set":{},"removed_from_attention_set":{"1002437":{"account":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"last_update":"2025-11-22 19:25:09.000000000","reason":"Change was submitted"},"1000021":{"account":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"last_update":"2025-11-08 17:58:06.000000000","reason":"\u003cGERRIT_ACCOUNT_1000021\u003e replied on the change","reason_account":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"}}},"hashtags":[],"change_id":"I0dc8021cc3e21c5af619c71a1821a1afe9bffe78","subject":"semihosting: fix memory leak and double free","status":"MERGED","created":"2025-11-01 15:36:45.000000000","updated":"2025-12-17 11:42:26.000000000","submitted":"2025-11-22 19:25:09.000000000","submitter":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"total_comment_count":13,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"9196","meta_rev_id":"b39f9aa3c86cd302c6e7d7ce840c46fc4f55f0b3","_number":9196,"owner":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},{"value":0,"_account_id":1002047,"name":"Evgeniy Naydanov","email":"eugnay@gmail.com","username":"en-sc"},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2025-11-22 19:25:09.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Code-Review":{"approved":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"all":[{"tag":"autogenerated:gerrit:merged","value":2,"date":"2025-11-22 19:25:09.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2025-11-22 19:25:09.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1002047,"name":"Evgeniy Naydanov","email":"eugnay@gmail.com","username":"en-sc"},{"value":0,"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]}],"values":{"-2":"This shall not be merged","-1":"I would prefer this is not merged as is"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":1000859,"name":"Karl Palsson","email":"karlp@tweak.au","username":"karlp"}],"REVIEWER":[{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},{"_account_id":1002047,"name":"Evgeniy Naydanov","email":"eugnay@gmail.com","username":"en-sc"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-11-01 15:36:56.000000000","updated_by":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2025-11-01 15:38:05.000000000","updated_by":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2025-11-01 23:19:04.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"state":"CC"},{"updated":"2025-11-08 17:58:06.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"state":"REVIEWER"},{"updated":"2025-11-10 09:57:31.000000000","updated_by":{"_account_id":1002047,"name":"Evgeniy Naydanov","email":"eugnay@gmail.com","username":"en-sc"},"reviewer":{"_account_id":1002047,"name":"Evgeniy Naydanov","email":"eugnay@gmail.com","username":"en-sc"},"state":"REVIEWER"},{"updated":"2025-12-15 10:19:09.000000000","updated_by":{"_account_id":1000859,"name":"Karl Palsson","email":"karlp@tweak.au","username":"karlp"},"reviewer":{"_account_id":1000859,"name":"Karl Palsson","email":"karlp@tweak.au","username":"karlp"},"state":"CC"}],"messages":[{"id":"fe551a0584d0952f54f31ff28e7c953c42db99f5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"real_author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"date":"2025-11-01 15:36:45.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"b09294083badd4af6dea38d6b43523a431eaa5a7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"real_author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"date":"2025-11-01 15:38:01.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"1bb34a09229a28ad4ad736055b45d70045d91b8b","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2025-11-01 15:38:05.000000000","message":"Patch Set 1: Verified-1\n\nBuild Failed \n\nhttps://build.openocd.org/job/openocd-gerrit/22158/ : FAILURE\n\nhttps://build.openocd.org/job/openocd-gerrit-build/21279/ : FAILURE","accounts_in_message":[],"_revision_number":1},{"id":"8249432d1f8cc78cef5750361212aa3821c8a4b7","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2025-11-01 15:39:02.000000000","message":"Patch Set 2: Verified-1\n\nBuild Failed \n\nhttps://build.openocd.org/job/openocd-gerrit/22159/ : FAILURE\n\nhttps://build.openocd.org/job/openocd-gerrit-build/21280/ : FAILURE","accounts_in_message":[],"_revision_number":2},{"id":"cba7be6e022d8cb1171c08dee9fd2955f4d22afb","author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"real_author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"date":"2025-11-01 23:19:04.000000000","message":"Patch Set 2:\n\n(4 comments)","accounts_in_message":[],"_revision_number":2},{"id":"5cf24a5f1971512ff0fc26a906dedf0f88df1892","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"real_author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"date":"2025-11-06 09:55:45.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":3},{"id":"614498c0c8810e47a333ef6e9da665944ca7b89f","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2025-11-06 10:02:14.000000000","message":"Patch Set 3: Verified-1\n\nBuild Failed \n\nhttps://build.openocd.org/job/openocd-gerrit/22250/ : FAILURE\n\nhttps://build.openocd.org/job/openocd-gerrit-build/21364/ : FAILURE","accounts_in_message":[],"_revision_number":3},{"id":"db3ba4a1828dc21afde48e28048b68ab92661e0e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"real_author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"date":"2025-11-06 14:43:42.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":4},{"id":"2d8b1a9ac6745f64e933bda54ad3e8a20f6892cb","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2025-11-06 15:05:18.000000000","message":"Patch Set 4: Verified+1\n\nBuild Successful \n\nhttps://build.openocd.org/job/openocd-gerrit/22255/ : SUCCESS\n\nhttps://build.openocd.org/job/openocd-gerrit-build/21369/ : SUCCESS","accounts_in_message":[],"_revision_number":4},{"id":"dcf150df46303e538a06127c054b9498f59d2cd5","author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"real_author":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"date":"2025-11-06 16:44:56.000000000","message":"Patch Set 4:\n\n(3 comments)","accounts_in_message":[],"_revision_number":4},{"id":"4e93a0a3a651ecb59407840991a05294cf4e92ce","author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"real_author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"date":"2025-11-08 17:58:06.000000000","message":"Patch Set 4: Code-Review+1\n\n(4 comments)","accounts_in_message":[],"_revision_number":4},{"id":"aac71dadc8737f8d6c777dc531c498d19d31d8a4","author":{"_account_id":1002047,"name":"Evgeniy Naydanov","email":"eugnay@gmail.com","username":"en-sc"},"real_author":{"_account_id":1002047,"name":"Evgeniy Naydanov","email":"eugnay@gmail.com","username":"en-sc"},"date":"2025-11-10 09:57:31.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"4787d0307cabb20a2e2f61ce7967999997e544e6","author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"real_author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"date":"2025-11-22 19:25:03.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"e713c71cdd3053ba6923c9771d805d585b9f2c9d","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"real_author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"date":"2025-11-22 19:25:09.000000000","message":"Change has been successfully cherry-picked as 5ff384be086a82e05901f37e07d16ab2b585c4c8","accounts_in_message":[],"_revision_number":5},{"id":"9401b3c9597fe1181513ecd0a010eefa1a92a0b8","author":{"_account_id":1000859,"name":"Karl Palsson","email":"karlp@tweak.au","username":"karlp"},"real_author":{"_account_id":1000859,"name":"Karl Palsson","email":"karlp@tweak.au","username":"karlp"},"date":"2025-12-15 10:19:09.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"b39f9aa3c86cd302c6e7d7ce840c46fc4f55f0b3","author":{"_account_id":1000859,"name":"Karl Palsson","email":"karlp@tweak.au","username":"karlp"},"real_author":{"_account_id":1000859,"name":"Karl Palsson","email":"karlp@tweak.au","username":"karlp"},"date":"2025-12-17 11:42:26.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5}],"current_revision":"5ff384be086a82e05901f37e07d16ab2b585c4c8","revisions":{"5f2b6eb9b286611b90364fc2e775be0ba159ed54":{"kind":"REWORK","_number":4,"created":"2025-11-06 14:43:42.000000000","uploader":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"ref":"refs/changes/96/9196/4","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/96/9196/4","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/4 \u0026\u0026 git checkout -b change-9196 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/96/9196/4","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"88b9bd396d5a1f83c49fa1b28745fd7feaca2b2e","subject":"target: cortex-m: fix support for armv8m caches"}],"author":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-10-06 20:19:56.000000000","tz":180},"committer":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-11-06 14:43:34.000000000","tz":180},"subject":"semihosting: fix memory leak and double free","message":"semihosting: fix memory leak and double free\n\nResolve two problems that occurred when working with semihosting service\nthrough multiple connection cycles (connect-disconnect-reconnect):\n\n1) Double free:\n    When the same service handles multiple connections sequentially,\n    the same memory gets freed repeatedly, because function\n    \u0027semihosting_service_connection_closed_handler()\u0027 incorrectly frees\n    service-\u003epriv-\u003ename on every connection closure.\n\n2) Memory leak:\n    Function \u0027free_services()\u0027 misses service-\u003epriv-\u003ename cleanup for\n    semihosting redirection. Memory remains allocated after service\n    destruction.\n\nThe solution introduces a new \u0027dtor()\u0027 field in the service structure\nthat is called exactly once during free_service() execution.\n\nTo reproduce the issue, you can do the following:\n    1. openocd -f target.cfg -c init -c \u0027arm semihosting enable\u0027 -c\n    \u0027arm semihosting_redirect tcp 4445\u0027\n\n    # in another terminal\n    2. nc localhost 4445\n    3. Ctr+C\n    4. nc localhost 4445\n    5. Ctr+C\n\nChange-Id: I0dc8021cc3e21c5af619c71a1821a1afe9bffe78\nSigned-off-by: Kulyatskaya Alexandra \u003ca.kulyatskaya@syntacore.com\u003e\n"}},"5ff384be086a82e05901f37e07d16ab2b585c4c8":{"kind":"REWORK","_number":5,"created":"2025-11-22 19:25:09.000000000","uploader":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"ref":"refs/changes/96/9196/5","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/96/9196/5","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/5 \u0026\u0026 git checkout -b change-9196 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/96/9196/5","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"55e916050981af472c1749b8cbb0e4940ba26273","subject":"flash/nor/stm32h7x: Change \u0027option_read\u0027 output"}],"author":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-10-06 20:19:56.000000000","tz":180},"committer":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2025-11-22 19:25:09.000000000","tz":0},"subject":"semihosting: fix memory leak and double free","message":"semihosting: fix memory leak and double free\n\nResolve two problems that occurred when working with semihosting service\nthrough multiple connection cycles (connect-disconnect-reconnect):\n\n1) Double free:\n    When the same service handles multiple connections sequentially,\n    the same memory gets freed repeatedly, because function\n    \u0027semihosting_service_connection_closed_handler()\u0027 incorrectly frees\n    service-\u003epriv-\u003ename on every connection closure.\n\n2) Memory leak:\n    Function \u0027free_services()\u0027 misses service-\u003epriv-\u003ename cleanup for\n    semihosting redirection. Memory remains allocated after service\n    destruction.\n\nThe solution introduces a new \u0027dtor()\u0027 field in the service structure\nthat is called exactly once during free_service() execution.\n\nTo reproduce the issue, you can do the following:\n    1. openocd -f target.cfg -c init -c \u0027arm semihosting enable\u0027 -c\n    \u0027arm semihosting_redirect tcp 4445\u0027\n\n    # in another terminal\n    2. nc localhost 4445\n    3. Ctr+C\n    4. nc localhost 4445\n    5. Ctr+C\n\nChange-Id: I0dc8021cc3e21c5af619c71a1821a1afe9bffe78\nSigned-off-by: Kulyatskaya Alexandra \u003ca.kulyatskaya@syntacore.com\u003e\nReviewed-on: https://review.openocd.org/c/openocd/+/9196\nTested-by: jenkins\nReviewed-by: Evgeniy Naydanov \u003ceugnay@gmail.com\u003e\nReviewed-by: Antonio Borneo \u003cborneo.antonio@gmail.com\u003e\n"}},"9fbcc94b5353a38f306b3a307ea7e2068a1d59d3":{"kind":"REWORK","_number":1,"created":"2025-11-01 15:36:45.000000000","uploader":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"ref":"refs/changes/96/9196/1","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/96/9196/1","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/1 \u0026\u0026 git checkout -b change-9196 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/96/9196/1","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"88b9bd396d5a1f83c49fa1b28745fd7feaca2b2e","subject":"target: cortex-m: fix support for armv8m caches"}],"author":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-10-06 20:19:56.000000000","tz":180},"committer":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-11-01 15:36:36.000000000","tz":180},"subject":"[src/server]: segfaults on disabling of a dropped semihosting redirection YCAT-43681","message":"[src/server]: segfaults on disabling of a dropped semihosting redirection YCAT-43681\n\nResolve two problems that occurred when working with semihosting service\nthrough multiple connection cycles (connect-disconnect-reconnect):\n\n1) Double free:\n    When the same service handles multiple connections sequentially, the same\n    memory gets freed repeatedly, because function\n    \u0027semihosting_service_connection_closed_handler()\u0027 incorrectly frees\n    service-\u003epriv-\u003ename on every connection closure.\n\n2) Memory leak:\n    Function \u0027free_services()\u0027 misses service-\u003epriv-\u003ename cleanup for\n    semihosting redirection. Memory remains allocated after service destruction.\n\nThe solution introduces a new \u0027dtor()\u0027 field in the service structure that\nis called exactly once during free_service() execution.\n\nTo reproduce the issue, you can do the following:\n    1. openocd -f target.cfg -c init -c \u0027arm semihosting enable\u0027 -c\n    \u0027arm semihosting_redirect tcp 4445\u0027\n\n    # in another terminal\n    2. nc localhost 4445\n    3. Ctr+C\n    4. nc localhost 4445\n    5. Ctr+C\n\nChange-Id: I0dc8021cc3e21c5af619c71a1821a1afe9bffe78\nSigned-off-by: Kulyatskaya Alexandra \u003ca.kulyatskaya@syntacore.com\u003e\n"}},"bac0d1dc54a25c1897d1112ce5b02e3ea0d92e1a":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2025-11-01 15:38:01.000000000","uploader":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"ref":"refs/changes/96/9196/2","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/96/9196/2","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/2 \u0026\u0026 git checkout -b change-9196 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/96/9196/2","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"88b9bd396d5a1f83c49fa1b28745fd7feaca2b2e","subject":"target: cortex-m: fix support for armv8m caches"}],"author":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-10-06 20:19:56.000000000","tz":180},"committer":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-11-01 15:37:47.000000000","tz":180},"subject":"[src/server]: segfaults on disabling of a dropped semihosting redirection","message":"[src/server]: segfaults on disabling of a dropped semihosting redirection\n\nResolve two problems that occurred when working with semihosting service\nthrough multiple connection cycles (connect-disconnect-reconnect):\n\n1) Double free:\n    When the same service handles multiple connections sequentially, the same\n    memory gets freed repeatedly, because function\n    \u0027semihosting_service_connection_closed_handler()\u0027 incorrectly frees\n    service-\u003epriv-\u003ename on every connection closure.\n\n2) Memory leak:\n    Function \u0027free_services()\u0027 misses service-\u003epriv-\u003ename cleanup for\n    semihosting redirection. Memory remains allocated after service destruction.\n\nThe solution introduces a new \u0027dtor()\u0027 field in the service structure that\nis called exactly once during free_service() execution.\n\nTo reproduce the issue, you can do the following:\n    1. openocd -f target.cfg -c init -c \u0027arm semihosting enable\u0027 -c\n    \u0027arm semihosting_redirect tcp 4445\u0027\n\n    # in another terminal\n    2. nc localhost 4445\n    3. Ctr+C\n    4. nc localhost 4445\n    5. Ctr+C\n\nChange-Id: I0dc8021cc3e21c5af619c71a1821a1afe9bffe78\nSigned-off-by: Kulyatskaya Alexandra \u003ca.kulyatskaya@syntacore.com\u003e\n"}},"494287f547221bf5bfdaaedb5dfdaa464d9f5ac2":{"kind":"REWORK","_number":3,"created":"2025-11-06 09:55:45.000000000","uploader":{"_account_id":1002437,"name":"Alexandra Kulyatskaya","email":"a.kulyatskaya@syntacore.com","username":"AlexandraKulyatskaya"},"ref":"refs/changes/96/9196/3","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/96/9196/3","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/3 \u0026\u0026 git checkout -b change-9196 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/96/9196/3","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/96/9196/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"88b9bd396d5a1f83c49fa1b28745fd7feaca2b2e","subject":"target: cortex-m: fix support for armv8m caches"}],"author":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-10-06 20:19:56.000000000","tz":180},"committer":{"name":"Kulyatskaya Alexandra","email":"a.kulyatskaya@syntacore.com","date":"2025-11-06 09:39:57.000000000","tz":180},"subject":"semihosting: fix memory leak and double free","message":"semihosting: fix memory leak and double free\n\nResolve two problems that occurred when working with semihosting service\nthrough multiple connection cycles (connect-disconnect-reconnect):\n\n1) Double free:\n    When the same service handles multiple connections sequentially,\n    the same memory gets freed repeatedly, because function\n    \u0027semihosting_service_connection_closed_handler()\u0027 incorrectly frees\n    service-\u003epriv-\u003ename on every connection closure.\n\n2) Memory leak:\n    Function \u0027free_services()\u0027 misses service-\u003epriv-\u003ename cleanup for\n    semihosting redirection. Memory remains allocated after service\n    destruction.\n\nThe solution introduces a new \u0027dtor()\u0027 field in the service structure\nthat is called exactly once during free_service() execution.\n\nTo reproduce the issue, you can do the following:\n    1. openocd -f target.cfg -c init -c \u0027arm semihosting enable\u0027 -c\n    \u0027arm semihosting_redirect tcp 4445\u0027\n\n    # in another terminal\n    2. nc localhost 4445\n    3. Ctr+C\n    4. nc localhost 4445\n    5. Ctr+C\n\nChange-Id: I0dc8021cc3e21c5af619c71a1821a1afe9bffe78\nSigned-off-by: Kulyatskaya Alexandra \u003ca.kulyatskaya@syntacore.com\u003e\n"}}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dMAX -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX","-label:Verified\u003dMIN"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX","-label:Code-Review\u003dMIN"],"failing_atoms":[]}}]}
