Re: stack smashing detected

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Hi Stan,

Am 30.01.2023 um 17:00 schrieb Stan Johnson:

I am seeing anywhere from zero to four of the following errors while
booting Linux on 68030 systems and using sysvinit startup scripts:

*** stack smashing detected ***: terminated

I usually (but not always) see three of the errors while init is running
the rcS.d scripts, and one while running the rc2.d scripts. The stack
smashing messages appear only on the system console (nothing is logged
in an error log or dmesg). Despite the errors, the system continues
booting to multiuser mode without any obvious additional problems. I
haven't tested systemd, which is too slow to be useful on my m68k
systems (though I have a Debian SID with systemd that I can restore for
testing if necessary).

I'm using the current Debian SID and Debian kernel, and I've confirmed
the errors on a Mac IIci and SE/30. I haven't seen the errors on any
68040 system (I only tested on a Centris 650 and PowerBook 550c). I also
notice the errors on 68030 systems using custom kernels that I have
cross-compiled using GCC 12 or GCC 10 on a x86_64 system running Debian
SID; however, I do not see the errors as often if I cross-compile using
GCC 8.3.0 on a 686 system (running Debian 10.7 Buster) -- I saw the
errors a few weeks ago with an earlier kernel, but none today using
Linux 6.1.8 cross-compiled with GCC 8.3.0.

I'll be happy to help debug or troubleshoot, though at this point, since
the "stack smashing detected" errors aren't reporting which processes
are being terminated/aborted, I'm not sure where to start.

The man page of init states that init logs process and reason for termination in /var/run/utmp and /var/log/wtmp each time a child process terminates. You're looking for processed terminated by SIGABRT as far as I can see.

There does not appear to be any tool to extract that information from utmp/wtmp files though - utmpdump only shows login process information for me, nothing on init processes.

Another way may be logging the start of each of the rcS.d or rc2.d scripts until you know what scripts to look at in more detail, then adding 'set -v' at the start of those to log every command in the offending script.

Once the offending binary is known (and the crash can be reproduced after system boot), gdb can be used to find the function that overwrote its local stack guard.

That's a lot of work on a 030 Mac - have you tried to reproduce this on any kind of emulator?

I suppose one difference between your 030 and 040 Macs might be the amount of RAM available. I wonder if this bug results from a combination of 030 MMU and memory pressure, or 030 MMU only.



thanks for any suggestions

-Stan Johnson   userm57@xxxxxxxxx

[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux