To jsem vám nenapsal. Když jsem dneska odcházel domů z práce, na Masarykovom náměstí byl volební meeting SPD. Slyšel jsem Okamuru, viděl jsem Radima Fialu a Zuzanu Majerovou.
Vajíčka nelétala. Účastníci taky měli dost práce sami se sebou, aby se při té míře nachcanosti udrželi vůbec na nohou. To byla podívaná.

As it happens, we still use CVS in our operating system project (there are reasons for doing this, but migration to git would indeed make sense).

While working on our project, we occasionally have to do a full checkout of the whole codebase, which is several gigabytes. Over time, this operation has gotten very, very, very slow - I mean "2+ hours to perform a checkout" slow.

This was getting quite ridiculous. Even though it's CVS, it shouldn't crawl like this. A quick build of CVS with debug symbols and sampling the "cvs server" process with Linux perf showed something peculiar: The code was spending the majority of the time inside one function.

So what is this get_memnode() function? Turns out this is a support function from Gnulib that enables page-aligned memory allocations. (NOTE: I have no clue why CVS thinks doing page-aligned allocations is beneficial here - but here we are.)

The code in question has support for three different backend allocators:
1. mmap
2. posix_memalign
3. malloc

Sounds nice, except that both 1 and 3 use a linked list to track the allocations. The get_memnode() function is called when deallocating memory to find out the original pointer to pass to the backend deallocation function: The node search code appears as:

for (c = *p_next; c != NULL; p_next = &c->next, c = c->next)
if (c->aligned_ptr == aligned_ptr)
break;

The get_memnode() function is called from pagealign_free():

#if HAVE_MMAP
if (munmap (aligned_ptr, get_memnode (aligned_ptr)) < 0)
error (EXIT_FAILURE, errno, "Failed to unmap memory");
#elif HAVE_POSIX_MEMALIGN
free (aligned_ptr);
#else
free (get_memnode (aligned_ptr));
#endif

This is an O(n) operation. CVS must be allocating a huge number of small allocations, which will result in it spending most of the CPU time in get_memnode() trying to find the node to remove from the list.

Why should we care? This is "just CVS" after all. Well, Gnulib is used in a lot of projects, not just CVS. While pagealign_alloc() is likely not the most used functionality, it can still end up hurting performance in many places.

The obvious easy fix is to prefer the posix_memalign method over the other options (I quickly made this happen for my personal CVS build by adding tactical #undef HAVE_MMAP). Even better, the list code should be replaced with something more sensible. In fact, there is no need to store the original pointer in a list; a better solution is to allocate enough memory and store the pointer before the calculated aligned pointer. This way, the original pointer can be fetched from the negative offset of the pointer passed to pagealign_free(). This way, it will be O(1).

I tried to report this to the Gnulib project, but I have trouble reaching gnu.org services currently. I'll be sure to do that once things recover.

#opensource #development #bugstories

Took a tumble on the road today, swerving to avoid an ebike delivery guy that cut me off. I'm fine - scraped an elbow, and I think I'm going to have a pretty good bruise on my tailbone, but I successfully avoided the guy.

I know a bunch of people who think delivery e-bikers are some sort of menace, but the truth of it is that Toronto's bike lanes are terrible. Far too narrow, people parking in them and blocking them all the time. Half a lane wide, in place where there's four lanes for cars.

With 9/11 fast approaching, I often reflect on the events of that day on each anniversary, and one of the amazing things that came out of that day was a flight that landed in Gander Newfoundland Canada where the community of Gander step forward and made sure everyone on the flight was well taken care of. A musical was made about this, though it's title escapes me, and I might try and see if I can watch it tomorrow.
in reply to Kelly Sapergia

@kjsapergia I'll never forget barely being awake, and walking into my roommates room, he was watching the news. They were still figuring out what happened with the first plane crash, when we all saw the second plane hit live on TV, well let's just say I wasn't slightly awake after that, I was jolted awake, and stayed glued to the television all day, and hardly ate anything until later that night. I was in disbelief

Most people do not understand that there is no Canadian federal government Return to Office, #RTO, rather it is return to a building where you compete with everyone else to try to find a vacant desk to work at, because people no longer have offices at work, they are at their homes, and there are actually not enough desks for the number of workers being sent back to the office. The media seems oblivious to this fact.
#rto

I can't get the Z-Wave ZWA-2 device to pass through to a bhyve VM where I'm running Home Assistant because it only allows full PCI pass through of a device or USB controller. It does get exposed as a serial device which I can sorta pass through to byhyve, but it doesn't really work.

I was able to get a console on the HASS VM and figure out which serial device was matching com2 that I was connecting into it and I could connect from the host and pass through some ascii chars back and forth, but when HASS tried to talk to the device it kept saying there were errors talking to it. Very odd. Lights were blinking on the device though confirming communication of some sort was happening. I looked at the Z-Wave-JS code and saw it was using 115200,8n,0 essentially so that's what I used... no dice.

Someone on the FreeBSD forums suggested using a virtual null modem device inbetween and then using socat to connect to the other end of the virtual null modem cable, but that didn't work either.

However, I can configure HASS to talk to zwave-js-server running in a FreeBSD Jail as you can custom configure the websocket connection to point to anywhere instead of localhost. That did seem to work! It found the device and even did a firmware update on it. So it "works".

I need to clean up this setup because I'm literally running it as root at the moment and I'm using a git clone of their master branch 🥲

Now I just need to figure out how to ensure I can have a consistent serial device name in /dev so this doesn't break in the future.

Once that's sorted I'll have to write a blog post about it

github.com/zwave-js/zwave-js-s…

Yesterday G and I took her sister to the yearly Mexican Concert, at the nNational University's cultural center. It was, as usual, awesome, but for me the special treat was listening to one of my favorite orchestral pieces live for the first time. Now I'd like to share this beautifully violent masterpiece with you. 🎼😉

Silvestre Revueltas - Sensemayá

youtu.be/NKqzWa6fX4E

This entry was edited (18 hours ago)

On Mastodon you can search just your own posts by including the phrase "from:me" in your search.

There are lots of these special phrases (called "operators") which let you customise your Mastodon search, so that you get a very specific set of search results.

You can see a complete list of Mastodon search operators in this guide:

➡️ fedi.tips/how-do-i-search-for-…

You can combine several operators in one search, or use a minus sign - before an operator to exclude it from the search.

#FediTips

We interrupt this broadcast about a well known person being shot for a report of more regular school kids being shot.

When will Republicans come to the table about gun violence?

At least 3 students injured in shooting at Colorado high school: Officials - ABC News
abcnews.go.com/US/shooting-rep…

USPol, cuts to hearing and vision loss programs

Sensitive content

Championing inclusive language

"Language reflects culture. It shapes how people perceive themselves and one another..."

#inclusive #a11y

tetralogical.com/blog/2025/09/…

reshared this

NEW: Programs for #Students With Hearing and Vision Loss Harmed by Trump’s Anti-Diversity Push
==

Federal funding for organizations that help students with hearing and vision loss across eight states will stop at the end of the month, according to letters sent by a top #Education Dept. official and obtained by ProPublica.

#news #kids #trump #government #DEI

propublica.org/article/trump-d…

Dang folks, I mean what?
Basically I see 3 audio games shut down within well, as for sbyw, let's say about 1.5 years. And most of these shutdowns are just so uncalled for, though with the stw one I sympathise most.
Now the city of devision one though? Check out their discord and shit I tell you it's ridiculous. Sell a broken audio fps for fuckin' 1500 dollars. What????
Not even sbyw which is by far the greatest of those titles in my humble opinion would be worth 1.5k. O, and out of a sudden, yeah let's sell last shot too now! Maybe it's cuz they suddenly need to pay their apartments and blindy stupitity is the way to get that income from.
I'm speechless.
This entry was edited (22 hours ago)

Das Amtsgericht betonte, bei der Aktion seien lediglich bestehende Schmierereien übermalt worden. Um Sachbeschädigung handele es sich nicht, weil sich das Erscheinungsbild des Hauses nicht "im rechtsgutsspezifischen Sinne" verändert habe.

📝 ndr.de/nachrichten/niedersachs…

#NDR #NDS #Aktion

News/death
The Charlie Kirk shooting is going to overshadow Russia’s drone incursion in Poland. Makes me a bit sad. That's huge news. Huge. Changes a lot with the war in Ukraine and what's going to happen. I'm not sure. I'm worried.
Wow. At the time, it was a shooting. Now, it's a death. How horrible. What a horrible day. I don't care whether he was a conservative. By all accounts this man felt like a decent debater from what I heard, even if his ideas were divisive to some, that's no reason to go around killing him. Jeesh, people lost all care and empathy today, they just think, "oh, this guy says hateful stuff, he deserves to die!" Well nobody does. Life is a treasure and any shooting without self-defense justifications is senseless. Gosh. So distracted from work stuff, must get back to it for another hour.
This entry was edited (17 hours ago)