Here's a backtrace when C-g in the middle of the hanging `org-set-tags-command`:
Debugger entered--Lisp error: (quit) org-element-headline-parser(990890 t) #f(compiled-function (limit &optional granularity mode structure) "Parse the element starting at point.\n\nReturn value is a list like (TYPE PROPS) where TYPE is the type\nof the element and PROPS a plist of properties associated to the\nelement.\n\nPossible types are defined in `org-element-all-elements'.\n\nLIMIT bounds the search.\n\nOptional argument GRANULARITY determines the depth of the\nrecursion. Allowed values are `headline', `greater-element',\n`element', `object' or nil. When it is broader than `object' (or\nnil), secondary values will not be parsed, since they only\ncontain objects.\n\nOptional argument MODE, when non-nil, can be either\n`first-section', `item', `node-property', `planning',\n`property-drawer', `section', `table-row', or `top-comment'.\n\n\nIf STRUCTURE isn't provided but MODE is set to `item', it will be\ncomputed.\n\nThis function assumes point is always at the beginning of the\nelement it has to parse." #<bytecode -0xffa82cf259ad9a8>)(990890 element nil nil) org-element--parse-to(990890) org-element-at-point(990890) org-element-cache-map(#f(compiled-function (el) #<bytecode -0x5d1d54592fb960>)) org-get-buffer-tags() org-set-tags-command(nil) funcall-interactively(org-set-tags-command nil) command-execute(org-set-tags-command)