15 Jun 2025, Mark Grimes, Bug Report, Memory leak in mhttpd binary RPC code
|
Many thanks for the fix. We've applied and see better memory performance. We still have to kill and restart
mhttpd after a few days however. I think the official fix is missing this part:
diff --git a/src/mjsonrpc.cxx b/src/mjsonrpc.cxx
index 2201d228..38f0b99b 100644
--- a/src/mjsonrpc.cxx
+++ b/src/mjsonrpc.cxx
@@ -3454,6 +3454,7 @@ static MJsonNode* brpc(const MJsonNode* params)
status = cm_connect_client(name.c_str(), &hconn);
if (status != RPC_SUCCESS) {
+ free(buf);
return mjsonrpc_make_result("status", MJsonNode::MakeInt(status));
}
When the other process returns a failure the memory block is also currently leaked. I originally stated "...although I
don't think it contributed to the leak we were seeing" but it seems this was false.
Thanks,
Mark.
> I confirm that MJSON_ARRAYBUFFER does not work correctly for zero-size buffers,
> buffer is leaked in the destructor and copied as NULL in MJsonNode::Copy().
>
> I also confirm memory leak in mjsonrpc "brpc" error path (already fixed).
>
> Affected by the MJSON_ARRAYBUFFER memory leak are "brpc" (where user code returns
> a zero-size data buffer) and "js_read_binary_file" (if reading from an empty
> file, return of "new char[0]" is never freed).
>
> "receive_event" and "read_history" RPCs never use zero-size buffers and are not
> affected by this bug.
>
> mjson commit c798c1f0a835f6cea3e505a87bbb4a12b701196c
> midas commit 576f2216ba2575b8857070ce7397210555f864e5
> rootana commit a0d9bb4d8459f1528f0882bced9f2ab778580295
>
> Please post bug reports a plain-text so I can quote from them.
>
> K.O. |
19 Jun 2025, Frederik Wauters, Bug Report, add history variables
|
I have encounter this a few times
* Make a new history panel
* Use the web GUI to add history variables
* When I am at the "add history variables" panel, there is not scroll option. So
depending on the size and zoom of my screen, some variables further down the list
can not be selected
tried Chrome and Firefox |
19 Jun 2025, Stefan Ritt, Bug Report, History variables with leading spaces
|
I added now code to the logger so it properly complains if there would be a leading space in a variable name.
Stefan
> By accident we had history variables with leading spaces. The history schema check then decides that this is a new variable (the leading space is not read from the history file) and starts a new file. We found this because the run start became slow due to the many, many history files created. It would be nice to just get an error if one has a malformed variable name like this.
>
> How to reproduce: Try to put a variable with a leading space in the name into the history, repeatedly start runs.
> Sugested fix: Produce an error if a history variable has a leading space. |
23 Jun 2025, Stefan Ritt, Bug Report, Memory leak in mhttpd binary RPC code
|
Since this memory leak is quite obvious, I pushed the fix to develop.
Stefan |
04 Jul 2025, Mark Grimes, Bug Report, Memory leaks in mhttpd
|
Something changed in our system and we started seeing memory leaks in mhttpd again. I guess someone
updated some front end or custom page code that interacted with mhttpd differently.
I found a few memory leaks in some (presumably) rarely seen corner cases and we now see steady
memory usage. The branch is fix/memory_leaks
(https://bitbucket.org/tmidas/midas/branch/fix/memory_leaks) and I opened pull request #55
(https://bitbucket.org/tmidas/midas/pull-requests/55). I couldn't find a BitBucket account for you
Konstantin to add as a reviewer, so it currently has none.
Thanks,
Mark. |
21 Jul 2025, Stefan Ritt, Bug Report, Default write cache size for new equipments breaks compatibility with older equipments
|
> Perhaps have:
>
> set_write_cache_size("SYSTEM", 0);
> set_write_cache_size("BUF1", bigsize);
>
> with an internal std::map<std::string,size_t>; for write cache size for each named buffer
Ok, this is implemented now in mfed.cxx and called from examples/experiment/frontend.cxx
Stefan |
17 Sep 2025, Mark Grimes, Bug Report, Midas no longer compiles on macOS
|
Hi,
The current develop branch no longer compiles on macOS. I get lots of errors of the form
/Users/me/midas/src/history_schema.cxx:740:4: error: unknown type name 'off64_t'; did you mean 'off_t'?
740 | off64_t fDataOffset = 0;
| ^~~~~~~
| off_t
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sd
k/usr/include/sys/_types/_off_t.h:31:33: note: 'off_t' declared here
31 | typedef __darwin_off_t off_t;
| ^
There are also similar errors about lseek64. This appears to have come in with commit 9a6ad2e dated
23rd July, but I think it was merged into develop with commit 2beeca0 on 3rd of September.
Googling around it seems that off64_t is a GNU extension. I don't know of a cross platform solution but I'm
happy to test if someone has a suggestion.
Thanks,
Mark. |
17 Sep 2025, Konstantin Olchanski, Bug Report, Midas no longer compiles on macOS
|
> The current develop branch no longer compiles on macOS. I get lots of errors of the form
> /Users/me/midas/src/history_schema.cxx:740:4: error: unknown type name 'off64_t' ...
Confirmed. No idea why off64_t is missing on MacOS. I will try to fix it next week.
K.O. |
06 Nov 2025, Konstantin Olchanski, Bug Report, broken scroll on midas web pages
|
midas web pages that use overlays (dlgPanel, etc) are currently broken - if
overlay does not fit in the visible window, it's bottom is truncated and control
buttons like "create" and "cancel" are not visible, not clickable, page does not
work.
when these pages were originally written, I am pretty sure these overlays were
scrollable and this problem did not exist. I think that was broken recently,
maybe withint the last year or so.
specific examples:
a) odb editor:
- open odb editor,
- click on "create odb link"
- click on "link target ...", a dialog overlay opens with a list of odb keys in
the current directory
- select a directory with a large number of entries (i.e. "/Programs")
- alternatively, make browser window smaller
- observe the "ok" and "cancel" buttons are not visible, cannot be clicked
- definitely, there used be a scroll bar and one could scroll down to see these
buttons.
b) history planel editor:
- open history plot,
- click on "configure this plot" icon,
- history editor opens,
- click "add active variables"
- select active event that has many variables
- observe that the list is cut off at the bottom, the very last variables are
not visible
- alternatively, make the browser window smaller
I wrote this page and at the time this problem did not exist, there was a scroll
bar and one could scroll up and down the list even if there were really many
variables there.
Maybe this breakage is not from us, I see similar problems on other sites, so
maybe browser behaviour changed recentlyshly.
I think Stefan write the dlgPanel code originally? I am not very familiar with
it and I do not know if anybody changed it recently?
K.O. |
13 Nov 2025, Stefan Ritt, Bug Report, broken scroll on midas web pages
|
I confirm the problem is there (at least under MacOSX Safari) and I will take care of it.
Stefan |
14 Nov 2025, Stefan Ritt, Bug Report, broken scroll on midas web pages
|
This problem was introduced by ZS in March 2023 with these commits:
https://bitbucket.org/tmidas/midas/commits/25b13f875ff1f7e2f4e987273c81d6356dd2ff53
https://bitbucket.org/tmidas/midas/commits/2a9e902e07156e12edecb5c2257e4dbd944f8377
by setting
d.style.position = "fixed";
which prevents the scrolling. I have no idea why this change was made, so it should be fixed by the original
author.
Stefan |
16 Nov 2025, Zaher Salman, Bug Report, broken scroll on midas web pages
|
Sorry about that. I could not figure out what was the reason for doing this. This was during the time I was working on the file_picker. I removed these lines and see no effect on the file_picker. I'll continue checking it affect anything else.
Zaher
> This problem was introduced by ZS in March 2023 with these commits:
>
> https://bitbucket.org/tmidas/midas/commits/25b13f875ff1f7e2f4e987273c81d6356dd2ff53
> https://bitbucket.org/tmidas/midas/commits/2a9e902e07156e12edecb5c2257e4dbd944f8377
>
> by setting
>
> d.style.position = "fixed";
>
> which prevents the scrolling. I have no idea why this change was made, so it should be fixed by the original
> author.
>
> Stefan |
17 Nov 2025, Konstantin Olchanski, Bug Report, broken scroll on midas web pages
|
> Sorry about that. I could not figure out what was the reason for doing this. This was during the time I was working on the file_picker. I removed these lines and see no effect on the file_picker. I'll continue checking it affect anything else.
I confirm reported problem seems to be fixed in commit:
https://bitbucket.org/tmidas/midas/commits/7f2690b478d6dfb16b48fc98955093e6369b04c1
Big thanks to Stefan and Zaher for figuring it out quickly.
K.O. |
18 Nov 2025, Lars Martin, Bug Report, TMFeEquipment fEqConfReadOn not written to ODB
|
I'm constructing a TMFeEquipment with this constructor:
MagnetFe(const char *eqname, const char *eqfilename) // ctor
: TMFeEquipment(eqname, eqfilename)
{
fEqConfEventID = 3;
fEqConfBuffer = "SYSTEM";
fEqConfPeriodMilliSec = 1000; // in milliseconds
fEqConfLogHistory = 1;
fEqConfReadOn = RO_ALWAYS;
}
When I start with a fresh ODB, the directories are created correctly, and e.g. the
event ID is set correctly, but "Read on" is set to 1 (i.e. RO_RUNNING) instead of
0xFF.
Now when I set it to 0xFF manually and restart, it gets overwritten to 7
(RO_NONTRANS), which I guess is a relatively recent change and doesn't affect me
negatively. |
21 Nov 2025, Scott Oser, Bug Report, Cannot edit values in a subtree containing only a single array of BOOLs using the ODB web interface
|
I think I've found a bug in MIDAS ...
Description: If you have an ODB subtree that contains only an array of BOOLs, you cannot edit them from the ODB webpage, although you can change them using odbedit (and probably from code as well).
(If you use the dropdown menu to change any value from No to Yes, it just flips back to No immediately.)
But if you create a new key in that directory (doesn't seem to matter what), then you can edit the BOOLs from webpage. Delete that key, and once again you can't edit the BOOLs. |
24 Nov 2025, Stefan Ritt, Bug Report, Cannot edit values in a subtree containing only a single array of BOOLs using the ODB web interface
|
Can you please update to the latest develop versiokn of midas, and clear your browser cache so that the updated JavaScript midas library is loaded. Should be fixed by now. See attached screen shot where I changed every second value via the ODB editor.
Stefan
|
24 Nov 2025, Scott Oser, Bug Report, Cannot edit values in a subtree containing only a single array of BOOLs using the ODB web interface
|
| Stefan Ritt wrote: |
|
Can you please update to the latest develop versiokn of midas, and clear your browser cache so that the updated JavaScript midas library is loaded. Should be fixed by now. See attached screen shot where I changed every second value via the ODB editor.
Stefan
|
Thanks --- it looks like this commit (which we just missed by four days when we last updated MIDAS) resolves the issue for us:
https://bitbucket.org/tmidas/midas/commits/6af72c1d218798064a7762bae6e65ad3407de9d1
Thanks to Ben Smith for pointing us at exactly the right commit. |
25 Nov 2025, Konstantin Olchanski, Bug Report, Cannot edit values in a subtree containing only a single array of BOOLs using the ODB web interface
|
> Thanks --- it looks like this commit resolves the issue for us ...
> Thanks to Ben Smith for pointing us at exactly the right commit
I would like to take the opportunity to encourage all to report bug fixes like this one to this mailing list.
This looks like a serious bug, many midas users would like to know when it was introduced, when found, when fixed
and who takes the credit.
K.O. |
26 Nov 2025, Lars Martin, Bug Report, Error(?) in custom page documentation
|
https://daq00.triumf.ca/MidasWiki/index.php/Custom_Page#modb
says that
If the ODB path does not point to an individual value but to a subdirectory, the
whole subdirectory is mapped to this.value as a JavaSctipt object such as
<div class="modb" data-odb-path="/Runinfo" onchange="func(this.value)">
<script>function func(value) { console.log(value["run number"]); }</script>
In fact, it seems to return the JSON string of said object, so you'd have to write
console.log(JSON.parse(value)["run number"]) |
27 Nov 2025, Stefan Ritt, Bug Report, Error(?) in custom page documentation
|
Indeed a bug. Fixed in commit
https://bitbucket.org/tmidas/midas/commits/5c1133df073f493d74d1fc4c03fbcfe80a3edae4
Stefan |