-
gitomat
[illumos-gate] 17221 bhyve emulated e1000g fails with TSO -- Andy Fiddaman <illumos⊙fn>
-
tsoome
7G free ram and ramdiskadm can not create 2G disk, really?!
-
jclulow
tsoome: How much physical memory and how much swap on the system?
-
tsoome
8G + 8G
-
jclulow
That's definitely a little suspicious haha
-
jclulow
Do you know what check it's failing at?
-
tsoome
EAGAIN - we get it on memory allocation failure
-
tsoome
I was able to allocate like 1800MB
-
tsoome
system is vmware fusion VM
-
tsoome
tbh, I did not really dig too much...
-
jclulow
I guess it'll stay the way it is then haha
-
tsoome
btw
illumos.org/issues/7291 or
illumos/illumos-gate #22 — the panic script at issue does still work (it is a bit buggy, however): panic[cpu1]/thread=fffffe1719b9cc20: assertion failed: dv->sdev_nlink == 1, file: ../../common/fs/dev/sdev_subr.c, line: 2961
-
fenix
→
BUG 7291: Attempting to destroy ZFS filesystem and create ZFS volume with the same name caused system panic (In Progress)
-
sommerfeld
do ramdisks need to be contiguous in kernel virtual space? maybe that space is fragmented but looks sufficiently underutilized that we don't grow it?
-
tsoome
well, it also failed right after boot. but that does not really mean the memory is not fragmented....
-
tsoome
freebsd with 4GB of ram has no problem to create 2GB ramdisk.
-
tsoome
go figure.
-
tsoome
sorry to say, but this os needs much love.
-
Guest7
Hello, not sure if anyone's aware but the illumos man pages are down (at least for me). I haven't been able to access them for a couple of weeks
-
richlowe
We're aware, the internet sucks, work is afoot
-
jclulow
sommerfeld: No, it doesn't need to be contiguous
-
jclulow
tsoome: If you decide to debug it, let us know what check it's failing on for you.
-
tsoome
it has exactly one (1) line with return (EAGAIN); its pretty easy to see.
-
jclulow
Right, but why is it returning that
-
Guest7
richlowe Is there an alternative source of documentation?
-
rmustacc
Assuming you don't have a local system, you can always clone it and point man/mandoc tools at the pages directly.
-
Guest7
I've been referencing the SmartOS man pages but I'm not sure if there are discrepancies between those pages and the illumos pages
-
Guest7
I'll keep that in mind
-
tsoome
Guest7 you can use
man.omnios.org, there is small difference, but nothing too drastic.
-
nomad
If you have an illumos system installed, and presuming you're not short of disk space, I *strongly* suggest installing the manpages. Having them local means you don't care what the cloud is doing.
-
» nomad is the personification of 'old man yells at [the] cloud'.
-
ptribble
tsoome: aren't ramdisks limited to 25% of free memory? which 2G of 7G will exceed.
-
tsoome
ptribble yay;)
-
ptribble
ramdisk(4D) says "percentage of available physical memory" which isn't exactly clear whethere it's available or physical
-
richlowe
or both
-
richlowe
though why you'd do that I don't know
-
Guest7
Why would a build throw an 'implicit declaration of function' error for 'strdup', which is located in <string.h>, when this header is indeed present in the source file? Not blocked out by any ifdefs
-
tsoome
Guest7 replace -c by -E and see what is going on.
-
tsoome
Guest7 you should see traces of string.h, also function declarations in it, including one for strdup().
-
jclulow
Guest7: Isn't strdup(3C) in strings.h not string.h
-
alanc
it can happen if you set _POSIX_SOURCE or _XOPEN_SOURCE to an older version that didn't have strdup() and don't have __EXTENSIONS__ defined to allow non-standard functions to be declared
-
richlowe
it's pretty common for people to misunderstand the standards defines and think they're helping themselves
-
tsoome
string.h:extern char *strdup(const char *);
-
alanc
and some of those people write Makefiles or CMakefiles or meson.build files in to propogate those mistakes to others
-
richlowe
it's also fairly common to fall victim to namespace badness that makes things work on other systems, just because of the implementation details of how their headers include other headers
-
sommerfeld
ptribble: d'oh.
-
richlowe
tsoome: see the standards/namespace guards surrounding literally that line
-
Guest7
tsoome Thanks! I'll try looking here next
-
Guest7
I did find strdup(3C) in strings.h instead of string.h per jclulow. There are plenty of other functions which are getting the same error
-
jclulow
Guest7: What does the command line for "gcc" end up being
-
richlowe
a number getting the same error sounds like standards namespace defines
-
richlowe
oh, jclulow is ahead of me
-
Guest7
Hmm forgive my inexperience, are you asking for the output specs for gcc?
-
rmustacc
No, the full gcc command line that is being used that creates the failure.
-
rmustacc
So it would include things like -std=... -D... -o foo.o -c foo.c, etc.
-
neirac
-
Guest7
rmustacc Thanks, I'll find it and share it
-
richlowe
if you're using a build system that just prints "CC foo.o" the usual way to make that useful is to do `make V=1`
-
neirac
adfasd
-
Guest7
This program is using CMake
-
Guest7
ls
-
Guest7
Oops
-
Guest7
Still looking around for those flags, if nothing else, here's the repository
github.com/hpc-gridware/clusterscheduler
-
ptribble
It's passing -std=c99
-
richlowe
ptribble: was there anything still holding you back about fixing int8_t?
-
richlowe
"just" possible mangling ABI damage?
-
richlowe
ptribble: and if there's anything I could do to help get whatever manual page fixes you have outstanding upstream, what is it? :)
-
ptribble
Fixing char requires a number of changes to the gate itself
-
ptribble
I think you've already fixed them in the arm gate, but those would need to be fixed first
-
richlowe
I'll have fixed them, but I'm not sure in an easy to cherry-pick way :\
-
richlowe
and I won't have fixed anything I've unilaterally declared too crap to port
-
richlowe
which I sure look forward to writing an IPD about :\
-
richlowe
ptribble: but if your porting old software into the future hobby needs a further outlet... :)
-
ptribble
I wonder how much overlap there is between your "too crap to port" and my "too crap to ship in Tribblix"
-
richlowe
alanc: do you know what the hell is going on with `_I32LPx`? and it's use anywhere at all?
-
richlowe
it appears our headers decide "don't care about LP except they're the same" actually means "x == 64"
-
richlowe
jlevon: you used this on purpose in dboot
-
jclulow
richlowe: (cc pmooney) I think, looking at this some more, that it's fine to use _I32LPx there, but we should _also_ use _ILP32 when that's true -- and the UINTPTR_MAX definition should take that into account
-
jclulow
And probably that there are a great many places in the gate where we are assuming stuff (for, e.g., padding) which is actually only true for LP64 and would not necessarily be true for I32LPx at all
-
pmooney
yeah, I think the larger use of I32LPx as "pointers are 64-bit, right?" is wrong
-
jclulow
right
-
richlowe
but then _I32LPx surely only means "not a computer that doesn't exist"
-
richlowe
if you have to define the concrete reality too
-
richlowe
and also that all the uses we have for it in the code are sketchy as hell
-
jclulow
Yeah, I think it's probably a silly definition
-
pmooney
I mean, I32LPx would be true for amd64
-
jclulow
Right, I32LPx is true for everything we currently support haha
-
richlowe
I32LPx would be true for every computer that's not like, a Cray or NEC monstrosity
-
jclulow
and is also only relevant if you're actually trying to stuff a pointer into a long, or that you care about int being 32bit
-
pmooney
it looks like things checking for _only_ I32LPx is rare (if nonexistent)
-
pmooney
so the things checking for LP64 will continue to be correct
-
jclulow
We should probably look at cleaning up the silly haha
-
pmooney
we should
-
jclulow
This is indeed quite confusing
-
jclulow
(and, in this case, causing UINTPTR_MAX to be wrong)
-
pmooney
yup
-
pmooney
I'll get something filed for this
-
jclulow
I'll file a bug
-
jclulow
ok
-
jclulow
you do it then
-
jclulow
:D
-
pmooney
fine, I will
-
pmooney
richlowe: thanks for poking at this
-
jclulow
Yes, thank you
-
alanc
_I32LPx apparently came from PSARC/1996/370
-
jclulow
PSARC/1996/370 Derived Types for 64-bit Solaris Tim Marsland closed approved 9/17/97 Unpublished
-
jclulow
rip
-
alanc
the exception, though I don't know why Solaris or illumos would care, would be the initial HAL 64-bit port of Solaris to their SPARC64 CPU before Fujitsu absorbed them, since they were actually ILP64
-
alanc
-
alanc
sparc.org/wp-content/uploads/2014/01/64.derived.type_.pdf.gz is a very similar paper to the ARC case, except it's missing the ILP32x sections
-
alanc
but the discussion of how it sucks that C++ mangles "int" and "long" differently in 32-bit, even though they have the same underlying representation, and thus changing types from "long" to "int" to mean "really 32-bit" breaks C++ when preparing your headers for LP64 environments
-
richlowe
same problem I asked ptribble about earlier
-
richlowe
plate, shrimp
-
alanc
that ARC case also includes the wonderful statement " We have around 38 years to work out how to fix the time_t problem, for example."
-
pmooney
filed 17234 for this
-
pmooney
If you think there's reason to leave I32LPx defined, on the off chance that we want to handle non-32bit ints in the future, please say so
-
pmooney
otherwise I'm inclined to rip it all the way out
-
tsoome
good riddance;)
-
richlowe
from what I have seen, I don't think it would help even if that happened.
-
tsoome
-
fenix
→ CODE REVIEW 3288: 17139 sparc: remove (NEW) |
illumos.org/issues/17139
-
richlowe
I wish I understood how it got into usbwcm, ilb, rds,
-
richlowe
and presumably dboot was explicitly _trying_ to get 64bit definitions without being 64bit itself?
-
tsoome
worse. its 32-bit in i86pc and 64-bit in i86xpv. And yes, it needs 64-bit defs to fill boot_info et al for 64-bit kernel.
-
tsoome
and of course, part of the mess is because it had to take care of both 32-bit and 64-bit kernels.
-
jclulow
uts/intel/sys/bootinfo.h has explicit sizing and definitions of its own to make that happen though
-
jclulow
_I32LPx doesn't get used in there
-
alanc
got sidetracked reading through the extensive mail log (including many digressions into how many years it would be before the 32-bit time_t became a problem), since I32LPx wasn't in the initial proposal
-
alanc
it looks like it came out of trying to resolve compatibility issues with older compilers (older by 1996 standards, so pre-historic for illumos) and also XPG3 standards test failures
-
alanc
We would also support a new feature test macro that lets users
-
alanc
choose to opt into a "portable source" world i.e. define a
-
alanc
preprocessor symbol _I32LPx to see a world where integers are
-
alanc
always 32-bit, and longs and pointers are simply the same
-
alanc
size.
-
alanc
This symbol would be used for constructing the ON
-
alanc
consolidation, since we do not wish to fill it full of useless
-
alanc
#ifdef's.
-
jclulow
and yet, here we are haha
-
alanc
apparently XPG3 still defined interfaces like write() as "int" instead of "size_t"
-
jclulow
That's unfortunate
-
alanc
pastebin.com/7WukCeB2 is the body of the opinion from that case - see section 4.2 for I32LPx
-
jclulow
thanks!!
-
alanc
so it seems like the non-_ILP32x case was for compatibility, with _ILP32x being the way they wanted new software to be written
-
alanc
err, I32LPx
-
alanc
its friday afternoon, brains may not be at full operating capacity