00:05:18 | * | melba_ joined #nimrod |
00:05:23 | * | melba quit (Read error: Connection reset by peer) |
00:48:49 | * | rel42 joined #nimrod |
00:52:16 | * | melba_ quit (Ping timeout: 256 seconds) |
00:59:14 | * | q66 quit (Quit: Leaving) |
01:28:19 | * | rel42 quit (Quit: Leaving) |
01:38:00 | * | OrionPK quit (Quit: Leaving) |
01:40:22 | * | gdos quit (Read error: Operation timed out) |
01:50:28 | * | XAMPP-8 joined #nimrod |
02:03:54 | * | ltbarcly joined #nimrod |
02:08:28 | * | ltbarcly quit (Ping timeout: 240 seconds) |
02:14:37 | * | gdos joined #nimrod |
02:19:28 | * | XAMPP-8 quit (Ping timeout: 240 seconds) |
02:48:27 | * | XAMPP quit (Read error: Connection reset by peer) |
02:54:24 | * | gdos quit (Read error: Connection reset by peer) |
03:12:19 | * | brson quit (Quit: leaving) |
03:14:22 | * | gdos joined #nimrod |
03:19:21 | Varriount | Best way to quickly get a stack trace of a location in code: assert(0==1) :3 |
03:21:36 | Demos | nice, that will be good for those times when visual c++ decides exceptions are not worth keeping stack traces for |
03:22:28 | Varriount | Demos, I have been, for the last 2 hours, trying to track down an elusive bug affecting the socket functionality in nimrod |
03:22:37 | Varriount | But the bug only appears on 64 bit builds |
03:23:11 | Demos | actually I would enjoy seeing an option in c++ (and nimrod I spose but the effects stuff makes it a little un-nessassary) to disable exceptions and replace throw/Raise with terminate() but ONLY for code internal to my project |
03:23:22 | Demos | hmmm |
03:23:42 | Demos | all systems or only windows-64 |
03:23:48 | Varriount | Win64 |
03:24:04 | Varriount | SO all you Linux-Masters are safe. :p |
03:24:37 | Demos | you on windows7 64? |
03:25:03 | Varriount | Win8 |
03:25:29 | Demos | OK I was going to point you toward KB2864432 (the AVX on x64 stack trace bug) |
03:25:40 | Demos | want someone to test it on 8.1 |
03:25:46 | Varriount | ? |
03:26:10 | Demos | win 7 64 corrupts stack traces when a 64 bit app crashes on a computer with AVX enabled |
03:26:22 | Varriount | Eww, ouch |
03:26:29 | Demos | oh it may only be 32bit apps |
03:26:42 | Demos | does Nimrod64 even build? |
03:26:46 | Varriount | Yes |
03:27:10 | Demos | hm, I got a bad check in some of the c bootstrap sources |
03:27:40 | Varriount | Demos, make sure to add the src directory to the build64.bat file |
03:28:00 | Varriount | Er, add it to the list of directories to search for includes. |
03:28:00 | Demos | herpderp, will do, someone should pop that into the git repo |
03:30:24 | Varriount | Demos, you're using gcc/mingw64, right? |
03:30:43 | Demos | erm maybe, I /think/ I am using gcc/cygwin64 |
03:30:55 | Demos | ideally I would be using MSVC but meh |
03:31:05 | Varriount | MSVC Doesn't work out of the box |
03:32:10 | Varriount | Actually, it might not work at all, given that it doesn't even fully support C99 |
03:32:24 | Demos | well MSVC12 is a little better |
03:32:37 | Varriount | 'little' |
03:33:03 | Demos | yeah, anyway the error is that the array at the bottom of nimbase.h has a negitive index |
03:33:37 | Varriount | Hm. You're using the version from the repository? |
03:34:06 | Demos | yeah from the csources repo |
03:34:30 | Varriount | Is it a nimrod compiler error, or a gcc error? |
03:34:46 | Demos | gcc, on compiling the csources for bootstrap |
03:34:58 | Demos | gcc is at version 4.5.2 |
03:35:27 | Varriount | Hm, mine is 4.8.2 |
03:35:50 | * | Endy joined #nimrod |
03:36:07 | Demos | oh dear god my gcc is from an old version of haskell-platform! |
03:36:26 | Varriount | Ewww.... |
03:36:53 | Demos | and hell, it is a 32bit version, so derp |
03:37:11 | Varriount | *cough*Mingw64*cough* |
03:38:04 | Demos | ima use cygwin64, already have that anyways |
03:38:15 | Demos | big derp on my part |
03:38:39 | Varriount | Demos, I actually have both 32 and 64 bit builds on my computer. |
03:40:21 | * | dyu_ joined #nimrod |
03:53:40 | Demos | nuts, gcc is stuck in my path :9 ima fix it tomorrow |
03:54:22 | Varriount | The solution to that is to use different batch files to set up the PATH for different purposes |
03:55:03 | Demos | well yes, but there were other problems. honestly I may change build.sh to allow cygwin |
03:55:12 | Varriount | I have two, one to set my path to use certain 32 bit versions of a set of programs, the other to use the 64 versions |
03:55:37 | Demos | it is even worse since the path seems to be differnt in cygwin vs powershell vs COMMAND.COM |
03:55:53 | Varriount | ^ Why I don't use Cygwin |
03:56:23 | Demos | yeah, but it is an easy way to get stuff like ssh, X windows, git, and so on. Things I need for shcool |
03:57:18 | Varriount | Hrm, I don't know about X Windows, but Msys and Mingw do a pretty decent job for utilities like git and ssh |
03:58:18 | Demos | you just compile everything with mingw? ideally we could do that with MSVC, imo if you are writing C in the first place you may as well write C89 |
03:58:42 | Varriount | Demos, not if the source files have no makefiles for MSVC |
03:59:08 | Demos | well we would all use cmake :D |
04:00:11 | Varriount | Demos, I can give you a 64 bit binary, you know |
04:00:33 | Demos | na, I can do it when it is not 12AM |
04:00:58 | Varriount | Where do you live? It's the same time here. |
04:01:09 | Demos | bro, look at my hostname |
04:01:49 | Varriount | Country: Educational Institution :3 |
04:02:58 | Demos | anyhow I am going to sleep, see you tomorrow |
04:03:20 | Varriount | Good night. Be very quiet, I'm hunting bugz. |
04:03:30 | Demos | good luck! |
04:03:40 | Varriount | I've narrowed it down to a handful of functions. |
04:04:03 | * | Demos quit (Quit: Leaving) |
04:15:25 | * | DAddYE joined #nimrod |
04:57:44 | * | isenmann joined #nimrod |
05:00:09 | * | ponce is now known as Guest87205 |
05:29:48 | * | Endy quit (Ping timeout: 240 seconds) |
05:39:11 | * | Associat0r quit (Quit: Associat0r) |
05:53:10 | * | ltbarcly joined #nimrod |
05:54:24 | * | XAMPP joined #nimrod |
05:54:26 | * | XAMPP quit (Changing host) |
05:54:26 | * | XAMPP joined #nimrod |
06:02:01 | Varriount | For all those interested ( dom96, Araq ) I've narrowed down the Win64 socket bug to asyncio.poll and one of its subprocedures, asyncio.pruneSocketSet |
07:15:30 | * | Guest87205 is now known as ponce_ |
07:42:12 | * | Varriount pounces on ponce_ |
07:42:47 | * | ltbarcly quit (Quit: Computer has gone to sleep.) |
08:58:12 | * | melba joined #nimrod |
09:11:20 | * | DAddYE quit (Remote host closed the connection) |
09:11:49 | * | DAddYE joined #nimrod |
09:16:01 | * | DAddYE quit (Ping timeout: 245 seconds) |
09:36:37 | * | q66 joined #nimrod |
10:12:36 | * | DAddYE joined #nimrod |
10:18:56 | * | DAddYE quit (Ping timeout: 265 seconds) |
11:15:17 | * | DAddYE joined #nimrod |
11:20:02 | * | DAddYE quit (Ping timeout: 264 seconds) |
11:43:31 | shevy | hehe |
11:44:21 | * | Boscop is now known as Bosc0p |
11:44:39 | * | Boscop joined #nimrod |
11:44:41 | * | Boscop quit (Changing host) |
11:44:41 | * | Boscop joined #nimrod |
11:50:21 | * | gdos quit (Read error: Operation timed out) |
11:51:40 | * | Boscop quit (Quit: Boscop) |
11:52:21 | * | Boscop joined #nimrod |
11:53:24 | * | Boscop quit (Client Quit) |
11:55:08 | * | Boscop joined #nimrod |
11:55:09 | * | Boscop quit (Changing host) |
11:55:09 | * | Boscop joined #nimrod |
12:15:55 | * | DAddYE joined #nimrod |
12:22:35 | * | DAddYE quit (Ping timeout: 260 seconds) |
12:31:44 | * | Endy joined #nimrod |
12:33:54 | * | [1]Endy joined #nimrod |
12:34:07 | * | jbe_ joined #nimrod |
12:36:48 | * | Endy quit (Ping timeout: 240 seconds) |
12:36:48 | * | [1]Endy is now known as Endy |
12:37:09 | jbe_ | hello |
12:37:47 | jbe_ | what is the nimrod equivalent of INT_MAX again? |
12:52:44 | * | Ricky_Ricardo joined #nimrod |
13:08:02 | jbe_ | ok nevermind, i found out, it is high(int) |
13:16:53 | * | girvo joined #nimrod |
13:18:48 | * | DAddYE joined #nimrod |
13:21:09 | * | wlhlm joined #nimrod |
13:23:18 | * | DAddYE quit (Ping timeout: 252 seconds) |
13:38:11 | EXetoC | badger badger badger badger badger badger badger badger |
13:39:20 | jbe_ | mushroom mushroom |
13:41:47 | EXetoC | c(:)=|< |
13:42:21 | girvo | ahhhhh |
13:42:23 | girvo | it's a snaaaaaake |
13:45:12 | EXetoC | where? |
13:48:42 | Araq | hi girvo welcome |
13:48:56 | girvo | hey Araq :) hows it going? |
13:49:08 | jbe_ | i used to tap away to that song in stepmania, fond memories |
13:49:58 | Araq | I integrated my new VM in the compiler and it works :-) |
13:50:15 | girvo | Love that feeling, right? :) |
13:50:20 | girvo | what's the new VM like? |
13:50:28 | Araq | I'm used to the feeling :P |
13:50:49 | Araq | the new VM is a register based bytecode VM |
13:51:07 | girvo | Neat. what was the old architecture? |
13:51:10 | Araq | for our compile time evaluation pleasures |
13:51:22 | Araq | the old vm was a simple AST-based interpreter |
13:51:59 | girvo | ahhh fair enough! |
13:52:55 | girvo | didn't the macro system utilise the AST for transformations? howd you tackle porting that behaviour? I will say i've never really touched proper VM's, i've always stuck to pretty boring interpreters for my toy projects |
13:53:55 | Araq | the VM still operates on ASTs |
13:54:15 | Araq | because as you say this is what macros deal with |
13:59:07 | Araq | and in case you wonder: |
13:59:48 | Araq | this means Nimrod runs your code faster at compile time than Python does at runtime ;-) |
14:00:15 | EXetoC | FK YEAH |
14:00:56 | EXetoC | and without any duck impostors |
14:04:38 | girvo | Araq: I was wondering about performance there! can't wait to give it a spin |
14:04:44 | * | girvo quit (Remote host closed the connection) |
14:09:12 | EXetoC | well, duck impostors at run-time anyway |
14:17:02 | EXetoC | so no one else has picked up that lambda project, eh? |
14:17:06 | EXetoC | will try to get it done by christmas |
14:19:28 | * | DAddYE joined #nimrod |
14:20:07 | Araq | huh? |
14:20:15 | Araq | what's the lambda project? |
14:20:25 | EXetoC | not so much a project really |
14:20:27 | EXetoC | \(x + y) |
14:20:46 | Araq | ah ok |
14:20:50 | Araq | yeah do it |
14:21:04 | Araq | the new vm fixes many macro eval bugs though |
14:21:16 | Araq | so it might be better to wait until it's pushed |
14:21:43 | * | Ricky_Ricardo quit (Quit: Ricky_Ricardo) |
14:21:53 | EXetoC | would language support for just "x + y" be feasible? it's still short though, and that could be the first step |
14:21:56 | EXetoC | ok I'll wait |
14:22:46 | Araq | I can't see how simply "x+ y" can work |
14:23:06 | EXetoC | I just realized how silly that was |
14:23:13 | EXetoC | the former is fine |
14:24:31 | EXetoC | f(º x + y, z). awesome |
14:26:21 | * | DAddYE quit (Ping timeout: 272 seconds) |
14:32:26 | * | gdos joined #nimrod |
15:03:54 | * | zanoni quit (Remote host closed the connection) |
15:13:11 | * | zanoni joined #nimrod |
15:22:20 | * | DAddYE joined #nimrod |
15:23:29 | * | shafire joined #nimrod |
15:23:51 | shafire | hi |
15:28:38 | * | DAddYE quit (Ping timeout: 240 seconds) |
15:39:52 | dom96 | hello |
15:40:46 | shafire | hey dom96 |
15:40:58 | shafire | I found old nimrod posts and code from you |
15:41:13 | dom96 | oh? |
15:41:15 | shafire | May I ask, how you found out about nimrod in that early time? |
15:41:25 | dom96 | Wikipedia. |
15:41:46 | dom96 | I was looking at the Python article and saw Nimrod in the "influenced" section. |
15:42:19 | shafire | http://en.wikipedia.org/wiki/Python_%28programming_language%29 <- have they removed it? |
15:42:29 | dom96 | yeah |
15:42:58 | dom96 | They removed it a couple of weeks after I found it, so it was pretty lucky. |
15:43:31 | shafire | yeah, did not have such luck ;( |
15:44:30 | dom96 | I tried getting the article back but they take it down due to lack of significance |
15:44:40 | dom96 | so please blog about Nimrod if you can |
15:46:57 | Varriount | Does Speaking of which, why isn't there a wikipedia article on nimrod? |
15:47:11 | Varriount | Also, good morning. |
15:47:15 | dom96 | because they took it down due to lack of significance. |
15:47:30 | Varriount | dom96, That is no excuse. |
15:47:48 | dom96 | http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/Nimrod_%28programming_language%29_%282nd_nomination%29 |
15:48:19 | Varriount | Believe me, there's quite a lot of programming language articles that could fall under that heading, and yet have stayed on wiki[edia. |
15:48:26 | dom96 | yep |
15:48:30 | dom96 | I gave examples in that talk page. |
15:48:46 | dom96 | http://en.wikipedia.org/wiki/Io_(programming_language) is still alive |
15:49:44 | dom96 | I can give you the source of the article I wrote if you guys wanna resubmit it and fight with the WP moderators. |
15:50:25 | Varriount | dom96, Just make sure the source doesn't get deleted. If we can find more online sources, then we can fight the moderators. |
15:50:57 | Varriount | Unfortunately, I've found that in communities like these, bone headed stupidity tends to win out over common sense. |
15:51:00 | shafire | lol |
15:51:01 | dom96 | There is at least one notable reliable source which is not primary nowadays: steved or whatever his name is wrote a blog post some time ago. |
15:51:19 | shafire | I could write some nimrod case study and publish it through my university |
15:51:27 | shafire | so we can cite from :D |
15:51:33 | Varriount | That would be very good |
15:51:47 | dom96 | shafire: that would be awesome. |
15:52:24 | dom96 | Perhaps it is worth resubmitting now. On the talk page Lesser Cartographies wrote "Perhaps think of it this way: a language becomes notable when people who haven't been involved in its creation start writing about it. If/when this language gets to that point you'll have no problem creating an article. At the moment, though, there just hasn't been enough uptake to get the coverage we need for notability." |
15:52:41 | dom96 | That has been the case. |
15:52:46 | shafire | and wasn't there a talk about nimrod on a conference? |
15:52:56 | Varriount | I noticed that one of the reasons for deletion was "lack of secondary sources" |
15:53:16 | dom96 | But then someone else wrote "No, sorry. Blogs and other self-published sources are not considered WP:RELIABLE sources for purposes of establishing WP:Notability at AfD. Further, the author of the blog appears to be anonymous, rendering this source especially weak. " |
15:53:28 | dom96 | If blogs are not considered reliable then wtf is!? |
15:53:29 | shafire | I see, "No, that's an advertisement for a talk given by the author. It is not independent of the subject" |
15:53:47 | dom96 | Yeah, we mentioned the talk to them. |
15:53:49 | * | io2 joined #nimrod |
15:53:53 | shafire | I think, we need some papers using nimrod |
15:53:59 | shafire | maybe a technical paper |
15:54:05 | profmakx | dom96 peer reviewed journal publications |
15:54:11 | profmakx | because they are not tainted by aything! |
15:54:58 | io2 | you need to solve a particular problem with nimrod in order to publish to non - general interest trade journals. |
15:55:24 | io2 | which means one has to identify a specific problem and demonstrate where nimrod's approach is superior |
15:55:35 | Varriount | Hm. |
15:55:52 | profmakx | or. just not care about WP wankers with their notability shit |
15:55:53 | io2 | Right now, the most interesting aspect when it comes to metaprogramming, is related to its term rewriting macros and AST techniques |
15:56:14 | Varriount | Possibly my translation of neil frasiers diff0match-patch library might suffice |
15:56:16 | io2 | I believe that a paper on that would attract a lot of interest |
15:56:31 | dom96 | well we have some university people here, write us some peer reviewed journal publications guys! |
15:56:37 | io2 | Araq: any ideas on that ^ |
15:56:40 | Araq | there is an article about it, but it's from me |
15:56:44 | Araq | so it doesn't count |
15:57:09 | io2 | How about doing a paper on metaprogramming with nimrod :) |
15:57:10 | Araq | I can write whole books about nimrod but it wouldn't count for wikipedia |
15:57:23 | Araq | somebody else gotta do it |
15:57:36 | io2 | one at least, could. |
15:58:42 | Araq | I have to leave, gye |
15:58:44 | Araq | *bye |
15:59:03 | io2 | bye boss |
15:59:09 | dom96 | *BDFL |
15:59:43 | Varriount | dom96, Did you get my message about the Win64 socket bug? |
15:59:48 | io2 | Seems to me I should start gathering the various notes and test I have been playing with in nimrod's macros, hope to find the time for it. |
15:59:55 | io2 | Something could come out of that. |
16:00:05 | io2 | hi dom96, how is jester doing :) |
16:00:31 | dom96 | Varriount: Yeah, what's wrong with pruneSocketSet? |
16:00:40 | dom96 | io2: I'm not really working on it heh |
16:02:17 | io2 | let me guess, little time :) |
16:02:51 | dom96 | Yeah. School sucks :\ |
16:03:01 | Varriount | dom96, I'm not quite sure, all I have debug output |
16:03:26 | dom96 | Varriount: How did you narrow it down? |
16:03:44 | Varriount | Comparing debug output between 32 and 64 bit builds |
16:05:39 | dom96 | nice. Did you just spam it with lots of 'echo's? lol |
16:05:53 | Varriount | dom96, let me show you the output |
16:07:41 | Varriount | dom96, http://pastebin.com/gcQWuJw8 |
16:08:14 | Varriount | and http://pastebin.com/nis8kV9L |
16:10:19 | * | Associat0r joined #nimrod |
16:11:17 | dom96 | hrm, I guess your line numbers don't match the original |
16:11:37 | dom96 | but yeah, I can see the first significant difference start at 554 |
16:12:05 | Varriount | All I know is that in the 32 bit build, the len(writefds) decreases by 1 in the asyncio.select procedure, after that procude calls the pruneSocketSet procedure |
16:12:15 | Varriount | In the 64 bit build, it doesn't |
16:13:29 | dom96 | right, hrm. |
16:14:26 | dom96 | what's 553? |
16:14:34 | Varriount | My suspician is that it has something to do with FD_ISSET, but I can't find any major differences with it |
16:14:47 | Varriount | 553 is the call to FD_ISSET |
16:15:04 | dom96 | its return value? |
16:15:11 | Varriount | Oh wait, I was wrong |
16:15:17 | Varriount | 553 is print(s[i].fd) |
16:15:39 | Varriount | in asyncio.pruneSocketSet |
16:15:40 | dom96 | oh nah, I don't think that's significant |
16:16:19 | dom96 | is 551 just you printing 'fd'? |
16:16:29 | Varriount | Yes. |
16:16:29 | EXetoC | Araq: let someone else take the credit |
16:17:09 | Varriount | dom96, 554 is print(FD_ISSET(s[i].fd, fd)) |
16:17:38 | dom96 | I wonder why the fd_count is 0 and yet fd_array still contains the file descriptor. |
16:18:08 | Varriount | I don't know, but that's what the working 32 bit version does. |
16:18:38 | Varriount | For the read and error file descriptors, anyway |
16:21:10 | Varriount | I mean, it changes the fd_count for the read and error file descripters from 1 to 0, and keeps the write fd at 1 |
16:21:56 | Varriount | dom96, the fd_count determines how far the FD_ISSET function searches the array |
16:22:09 | Varriount | Among other things. |
16:22:50 | Varriount | Sorry if I'm a bit incomprehensible, I spent about 5 hours yesterday tracking down this bug |
16:23:23 | dom96 | well, it looks to me like fd_isset is wrong |
16:23:55 | dom96 | the fd set contains 216 and fd_isset returns 0 |
16:24:11 | Varriount | Yes, but why? |
16:24:47 | dom96 | Try changing the 'bool' in https://github.com/Araq/Nimrod/blob/master/lib/windows/winlean.nim#L478 to a 'cint' |
16:24:57 | dom96 | and then just return the value in FD_ISSET |
16:27:25 | * | shafire left #nimrod (#nimrod) |
16:30:57 | guaqua | is there some easy way of calculating the closest power of two of a number (since it seems to be a requirement for example for initSet)? |
16:34:06 | Varriount | dom96,On 32 bit FD_ISSET returns, when changed to a cint, 0 for the read fd, 1 for the write fd, and 0 for the error fd, |
16:34:34 | dom96 | and 64bit? |
16:34:38 | Varriount | On 64 bit, ti returns 0 for the read fd, 0 for the write fd, and 0 for the read fd |
16:35:16 | * | shodan45 quit (Remote host closed the connection) |
16:37:34 | * | shodan45 joined #nimrod |
16:38:00 | dom96 | Now I wonder why the fd_count is 0 on 32bit |
16:39:07 | dom96 | Apparently this is how WSAFDIsSet looks like: http://www.c-worker.ch/dokuwsck/owinsck/winsockb.htm |
16:39:11 | dom96 | (B.5 ...) |
16:39:48 | dom96 | So if fd_count is 0 how does it work? |
16:40:37 | * | Varriount quit (Ping timeout: 272 seconds) |
16:41:30 | * | Varriount joined #nimrod |
16:41:58 | Varriount | What did I miss? |
16:42:17 | dom96 | http://build.nimrod-code.org/irclogs/ |
16:43:53 | Varriount | dom96, fd_count controls how much of the array is searched by FD_ISSET |
16:44:07 | Varriount | I think |
16:44:24 | dom96 | fd_count is the amount of file descriptors in the set |
16:44:48 | dom96 | in any case, why is it 0 on 32bit? |
16:45:12 | dom96 | if FD_ISSET searches nothing then why does it return 1? |
16:45:48 | Varriount | dom96, look at http://msdn.microsoft.com/en-us/library/windows/desktop/ms737873(v=vs.85).aspx |
16:46:35 | Varriount | fd_set has a fixed sized array |
16:50:23 | * | BitPuffin quit (Ping timeout: 272 seconds) |
16:51:18 | Varriount | http://msdn.microsoft.com/en-us/library/windows/desktop/ms741578(v=vs.85).aspx |
16:52:05 | dom96 | is that relevant? |
16:52:32 | Varriount | Thats the underlying call FD_ISSET makes |
16:52:49 | Varriount | Returns 1 if fd is part pf the set, 0 if not |
16:53:13 | dom96 | yes, but if fd_count is 0 then it thinks that the fd_set is empty |
16:53:22 | dom96 | so it should return 0 |
16:53:33 | Varriount | Yes |
16:53:38 | * | fowl joined #nimrod |
16:56:41 | * | DAddYE joined #nimrod |
16:56:51 | dom96 | so 32bit is incorrect too lol |
16:57:00 | Varriount | dom96, in short, the fd_count for the read and error fd's is wrong |
16:57:07 | Varriount | 32 bit isn't |
16:57:35 | dom96 | oh wait |
16:57:42 | dom96 | I don't know which is which now. |
16:57:59 | Varriount | Are you looking at the [astebins? |
16:58:00 | dom96 | You print out 3 fd sets |
16:58:03 | dom96 | yeah |
16:58:15 | Varriount | The second one is is the write fd |
16:58:31 | Varriount | the first is the read fd |
16:58:37 | Varriount | and the last is the error fd |
16:59:10 | dom96 | ohhh |
16:59:14 | Varriount | On 32 bit, the fd_count for the read and error fd_set's is 0 |
16:59:15 | dom96 | ok, so yeah. 32bit is correct. |
16:59:25 | Varriount | on 64 bit though, it's not |
16:59:42 | Varriount | Why..? |
16:59:53 | dom96 | it is correct for writeFd |
17:00:39 | dom96 | and yet FD_ISSET still fails |
17:03:17 | Varriount | Actually, it doesn't |
17:03:36 | Varriount | 0 means that the fd is part of the set |
17:03:47 | dom96 | lol |
17:03:51 | * | dom96 facepalms |
17:04:13 | Varriount | What sets the count on those fd_set's? |
17:04:39 | dom96 | yeah, this makes sense. |
17:04:50 | dom96 | The FD is removed from the FD set |
17:04:58 | dom96 | when its state changes |
17:05:02 | Varriount | Where? |
17:05:09 | dom96 | select does it |
17:06:01 | dom96 | huh |
17:06:06 | dom96 | Docs say "Nonzero if s is a member of the set. Otherwise, zero." |
17:07:12 | Varriount | FD_ISSET(s, *set) |
17:07:13 | Varriount | Nonzero if s is a member of the set. Otherwise, zero. |
17:07:22 | Varriount | I was wrong. |
17:07:38 | dom96 | indeed |
17:07:48 | dom96 | check the return value of 'select' |
17:08:29 | dom96 | Yeah, pruneSocketSet makes sense. |
17:09:09 | Varriount | As in, is working, or has the bug? |
17:09:21 | dom96 | is working |
17:10:49 | * | brson joined #nimrod |
17:12:11 | Varriount | dom96, 1 on 32 bit, -1 on 64 bit |
17:12:47 | dom96 | lol |
17:13:32 | dom96 | add: |
17:13:32 | dom96 | if select(..) == -1: OSError(OSLastError()) |
17:16:00 | Varriount | 64 bit errors, 32 bit doesn't |
17:16:07 | dom96 | what's the error? |
17:22:25 | Varriount | Unknown OS Error |
17:22:26 | Varriount | EOS |
17:22:33 | dom96 | gah |
17:22:50 | dom96 | That's helpful gah |
17:24:14 | fowl | lol |
17:25:00 | Varriount | dom96, the actual error code is zero |
17:25:55 | Varriount | Which means that the OS didn't recieve ane |
17:26:18 | dom96 | try running WSAGetLastError |
17:28:18 | fowl | Araq, i'd love to play with this new VM of yours |
17:30:08 | * | shodan45 quit (Ping timeout: 245 seconds) |
17:30:24 | Varriount | dom96, I'm gonna take a break on this for a bit, I'm falling asleep in my keyboard |
17:30:45 | Varriount | Thanks for your help so far, it's an infuriating bug |
17:30:48 | dom96 | hehe alright. You've done well so far. |
17:31:13 | * | Varriount is now known as Varaway |
17:31:59 | * | shodan45 joined #nimrod |
17:32:35 | * | shodan45 quit (Client Quit) |
17:33:06 | * | shodan45 joined #nimrod |
17:36:21 | * | rel42 joined #nimrod |
17:52:06 | * | rel42 quit (Quit: Leaving) |
17:53:25 | * | dyu_ quit (Quit: Leaving) |
18:01:24 | * | BitPuffin joined #nimrod |
18:06:23 | * | ltbarcly joined #nimrod |
18:10:47 | * | ltbarcly quit (Ping timeout: 260 seconds) |
18:12:56 | * | ltbarcly joined #nimrod |
18:24:35 | * | BitPuffin quit (Ping timeout: 245 seconds) |
18:32:28 | * | BitPuffin joined #nimrod |
18:40:51 | wlhlm | It seems like that the nimrod language definitions are removed from sublime-text entirely… |
18:41:02 | wlhlm | (version 3) |
18:43:00 | fowl | i've never seen nimrod in their list, i believe i use version 2 |
18:43:09 | fowl | i've always set .nim to python and be good with that |
18:45:28 | wlhlm | ahh, it looks like they are available externally: https://www.dropbox.com/s/84gtcgjmw2ec61r/Nimrod-Sublime.zip |
18:52:28 | Araq | 2 more and we have a record! |
18:52:42 | fowl | two more what |
18:52:44 | * | Araq pushes DAddYE to stay around |
18:52:54 | Araq | 2 more people |
18:52:55 | fowl | oh |
18:53:13 | DAddYE | Araq: here I am! |
18:53:19 | Araq | yay |
18:53:23 | DAddYE | (but I'm going to lunch XD |
18:53:29 | Araq | invite 2 friends |
18:53:35 | Araq | but they have to be female :P |
18:55:36 | Araq | fowl: I'll push a newvm branch tonight |
18:56:19 | Araq | but expect bugs |
18:58:30 | fowl | sweet |
19:01:53 | Araq | I also plan to make 'compileTime' variables persistent |
19:02:24 | Araq | this means ID generators etc work for cross modules |
19:03:04 | fowl | cool |
19:03:54 | Araq | they will be stored in the "nimrod.gid" file so they are even cross project |
19:04:11 | Araq | but this can of course cause lots of problems |
19:04:36 | fowl | maybe that should require {.compiletime,global.} |
19:04:58 | Araq | well it only makes sense for globals |
19:05:35 | Araq | the 'global' pragma is strange for a variable that is a global anyway |
19:06:57 | fowl | I thought I saw someone implemented tiled tile sheet library in nimrod |
19:07:26 | Araq | maybe a 'persistent' pragma is required here |
19:07:45 | io2 | what the ... http://en.wikipedia.org/wiki/Nimrod_%28programming_language%29 <--- DELETED? |
19:07:48 | Araq | or perhaps: compileTime: "filename.here" |
19:08:09 | Araq | io2: wikipedia surely is trying hard to become irrelevant :P |
19:08:28 | fowl | is there a programming wiki |
19:08:43 | io2 | Araq: are you sure there isn't something else going on? |
19:08:43 | Araq | there is rosetta code and we're there |
19:08:44 | fowl | not some wikia, but a notable wiki about programming to target instead of wikipedia |
19:08:49 | io2 | this is weird, nimrod is legitimate |
19:09:19 | dom96 | It's a conspiracy by Google and Mozilla to make Nimrod less known :P |
19:10:25 | io2 | i think it is a question of apps mostly |
19:10:38 | io2 | i will read the rationale, this is weird |
19:10:54 | Araq | the rationale makes some sense |
19:11:21 | Araq | except that according to it 70% of all articles on wiki should be deleted |
19:11:55 | wlhlm | weird, that it isn't at least in the english wikipedia, I always thought notability related discussions were special for the german wikipedia… |
19:12:04 | io2 | "Delete. Language is quite new and hasn't yet gained notability. Does not meet guidelines laid out in WP:NSOFT. Lesser Cartographies (talk) 11:43, 25 August 2013 (UTC)" |
19:12:56 | io2 | http://en.wikipedia.org/wiki/Io_%28programming_language%29 <--- dom96 really knows where to find these things! |
19:13:13 | dom96 | Yeah, I wanted to make a good argument. |
19:13:22 | dom96 | So I looked through some programming language articles. |
19:13:58 | dom96 | That article is still there, and it still has only 1 reference. |
19:14:18 | dom96 | Which is a primary source. |
19:15:41 | dom96 | I think we should just add it again. |
19:15:45 | wlhlm | I've read a ton of computer related articles without even one reference (en.wikipedia.org), they were marked as stub, but at least they were accessible |
19:16:54 | io2 | practically, even if nimrod is used by NASA, that will not be a primary source until voyager reaches alpha centauri |
19:17:01 | io2 | right |
19:17:15 | wlhlm | io2: :P |
19:17:21 | EXetoC | makes sense |
19:19:40 | io2 | http://en.wikipedia.org/wiki/Fancy_%28programming_language%29 << dom96 |
19:19:54 | io2 | I see lots of interesting things in the references |
19:20:04 | * | ltbarcly quit (Quit: Computer has gone to sleep.) |
19:21:57 | dom96 | Here is a copy of the article: https://en.wikipedia.org/wiki/User:Dom96/sandbox |
19:33:44 | io2 | fancy has the same kind of references btw |
19:37:51 | dom96 | So, is anyone up for resurrecting the article? |
19:38:14 | io2 | don't have an account yet |
19:38:29 | io2 | and I know little about wikipedia things, how they work out i mean |
19:39:04 | io2 | i guess the only thing I could do would be to start writing that thing I have in mind about macros |
19:39:38 | dom96 | yeah, do that. |
19:40:13 | fowl | cool i just found the events module |
19:59:10 | * | fowl quit (Ping timeout: 245 seconds) |
20:04:48 | * | wlhlm quit (Ping timeout: 252 seconds) |
20:06:56 | * | ltbarcly joined #nimrod |
20:18:25 | dom96 | Araq: I think exception handling on arm is broken. I compiled and ran a simple 'assert false' and it segfaulted. |
20:19:41 | * | fowl joined #nimrod |
20:19:52 | dom96 | And yeah, it looks like that is the problem I am having. |
20:20:24 | Araq | with --threads:on ? |
20:20:30 | dom96 | no |
20:20:43 | dom96 | just 'nimrod c -r test.nim' |
20:21:26 | * | Demos joined #nimrod |
20:21:49 | fowl | i think i found a regression |
20:22:09 | * | ltbarcly quit (Quit: Computer has gone to sleep.) |
20:22:44 | fowl | this doesn't work anymore https://github.com/fowlmouth/nimlibs/blob/master/fowltek/entitty.nim#L492 |
20:22:45 | Araq | fowl: ok, report it, but I know of so many regressions already that it's not even funny |
20:22:54 | Araq | yeah know about it |
20:22:56 | Demos | hm I just built a 64-bit version of nimrod on my windows computer, when I compile a file that exports for c functions with {.cdecl, exportc, dynlib.} without --app:lib I get an error, then I get an error the firs two times I compile /with/ --app:lib, after that is works fine |
20:23:19 | fowl | Araq, oh ok |
20:23:30 | fowl | also i had to make allComponents {.global.} for it to work |
20:23:48 | fowl | and i remember having to make it not {.global.} to make it work before..lol |
20:23:48 | Demos | oh, it just stops even calling gcc |
20:24:33 | Demos | are there problems compiling nimrod with winthreads and seh? |
20:27:54 | Demos | oh heay, had to delete nimcache, herpderp |
20:28:10 | fowl | lol |
20:32:14 | Araq | fowl: nope, I was wrong report it please |
20:32:25 | Araq | in fact, I should add that to the test suite |
20:33:07 | fowl | it seems to work sometimes |
20:33:53 | fowl | when i try it alone its working fine |
20:34:03 | * | Endy quit (Ping timeout: 248 seconds) |
20:37:41 | dom96 | Araq: so, any idea how to debug this? |
20:39:10 | Araq | debug it with gdb |
20:40:18 | dom96 | yeah, I am. It ends up on line 5091 of system.c (addChar) with a corrupted stack. |
20:41:25 | Araq | wtf |
20:41:29 | Araq | interesting |
20:41:48 | Araq | so that's the bug |
20:43:05 | dom96 | I'll gdb the same program on x86 and compare the values. |
20:46:10 | Araq | what values do you want to compare? |
20:46:19 | Araq | also try it with --gc:none please |
20:54:48 | dom96 | crash happens in auxwritestacktrace |
20:54:55 | * | jbe_ quit (Quit: Leaving) |
21:04:13 | * | zanoni quit (Remote host closed the connection) |
21:07:58 | * | zanoni joined #nimrod |
21:08:46 | dom96 | Araq: As soon as it gets into the 'addChar' proc the stack is corrupted. |
21:09:09 | Araq | but before that it's not? |
21:09:28 | dom96 | according to gdb at least |
21:10:42 | dom96 | https://gist.github.com/dom96/3dab418833d3daea046d |
21:13:09 | Araq | tried the same with --gc:none ? |
21:13:26 | dom96 | i'll try now |
21:13:59 | * | Varaway is now known as Varriount |
21:14:42 | dom96 | Araq: Still segfaults |
21:14:48 | dom96 | Araq: Want me to gdb it too? |
21:14:49 | Varriount | So Araq, dom96 and I have narrowed down where the Win64 socket bug lies. |
21:17:21 | Araq | Varriount: awesome |
21:17:25 | Araq | :-) |
21:17:49 | Varriount | It's somewhere in Asyncio.poll |
21:18:17 | Varriount | And relates with the write descripters fd_count |
21:18:46 | dom96 | The bigger problem is that select returns -1 |
21:18:50 | dom96 | indicating an error |
21:19:57 | Araq | dom96: yeah please |
21:24:31 | dom96 | Araq: it's exactly the same |
21:24:51 | * | zahary quit (Quit: Leaving.) |
21:25:19 | Araq | dom96: try with -d:noSignalHandler |
21:27:35 | dom96 | no change |
21:28:01 | Araq | in gdb please do: |
21:28:04 | Araq | print *x |
21:28:36 | Araq | just before 'addchar' corrupts the stack |
21:28:42 | dom96 | $1 = (NimStringDesc *) 0xb6de2028 |
21:28:54 | Araq | print **x |
21:29:07 | dom96 | yeah, that doesn't something weird. |
21:29:14 | dom96 | It gives nothing |
21:29:18 | dom96 | and looks as if it hangs there |
21:29:55 | * | ltbarcly joined #nimrod |
21:30:04 | dom96 | hrm, I guess it is doing something |
21:30:08 | dom96 | It's using 100% CPU |
21:30:31 | * | ltbarcly quit (Client Quit) |
21:33:12 | dom96 | on my desktop it just says "Cannot access memory at address 0x7ffff7f46050" |
21:33:49 | Araq | er what? |
21:34:00 | Araq | stack traces are broken on your desktop too? |
21:34:33 | dom96 | no |
21:34:45 | dom96 | I've ran the same app to compare |
21:35:08 | Araq | what app? |
21:35:35 | dom96 | var x = newException(EIO, "blah") |
21:35:35 | dom96 | echo x.msg |
21:35:35 | dom96 | raise x |
21:35:46 | * | ltbarcly joined #nimrod |
21:36:03 | * | ltbarcly quit (Client Quit) |
21:40:12 | Araq | print x->len |
21:40:59 | dom96 | There is no member named len. |
21:47:28 | * | DAddYE quit (Read error: Connection reset by peer) |
21:47:52 | * | DAddYE joined #nimrod |
21:49:58 | dom96 | Araq: I will have to go to sleep eventually... any other ideas? |
22:13:09 | Varriount | Ok... this is really odd.. |
22:13:36 | Varriount | Winselect is returning -1, but there is no windows error code for -1... |
22:13:59 | * | ltbarcly joined #nimrod |
22:14:50 | * | ltbarcly quit (Client Quit) |
22:16:47 | dom96 | You're suppose to use GetLastError to get the error code |
22:16:53 | dom96 | -1 just means "an error happened" |
22:18:11 | Varriount | dom96, GetLastError returns 0 |
22:18:29 | dom96 | have you tried WSAGetLastError? |
22:18:30 | fowl | WSAlasterror() |
22:19:59 | Varriount | dom96, That too, returns 0 |
22:20:06 | * | OrionPK joined #nimrod |
22:21:57 | Araq | that's not weird |
22:22:09 | Araq | I remember we had the same problem on win32 |
22:22:23 | Varriount | And how did you track it down? |
22:22:45 | Araq | the reason was that the memory manager was invoked in between which called HeapAlloc or something |
22:23:02 | Araq | which reset the internal error code to 0 |
22:23:12 | Araq | took us days to figure it out :P |
22:23:22 | dom96 | yes, just make sure to call GetLastError immediately after the call to select |
22:23:36 | dom96 | And by 'select' I mean the winapi select |
22:23:59 | Varriount | You mean like I am? |
22:24:01 | Varriount | var result = wselect(nfds, readfds, writefds, exceptfds, timeout) |
22:24:01 | Varriount | print(WSAGetLastError()) |
22:24:17 | Varriount | wselect being the windows select function I renamed and wrapped |
22:24:50 | dom96 | maybe your 'print' does something? |
22:24:54 | Araq | Varriount: check the generated C code |
22:25:00 | Araq | and try it with -d:release |
22:25:15 | Araq | release mode disables lots of checks that could interfere here |
22:26:28 | Araq | dom96: print x->Len ? |
22:27:03 | Varriount | *facepalm* |
22:27:18 | Varriount | My print template was allocating memory... |
22:27:29 | Varriount | And thus erasing the error code. |
22:27:58 | dom96 | Araq: it's x->Sup->len |
22:28:03 | dom96 | Araq: 34 |
22:28:05 | Araq | dom96: ah sorry |
22:28:26 | Varriount | Error 10038 |
22:29:01 | Varriount | WSAENOTSOCK |
22:29:14 | dom96 | Varriount: You can call OSError on it now |
22:29:24 | dom96 | to get a nice error message hopefully |
22:29:50 | Araq | sorry, dom96 told me to make the allocator not erase the error code but I refused due to performance/dependencies reasons iirc |
22:30:13 | dom96 | yeah... |
22:30:25 | Varriount | Araq, might want to warn others of that then. |
22:30:35 | Varriount | In big, bold letters somewhere |
22:30:45 | Araq | yup |
22:30:55 | Araq | or perhaps we can fix it |
22:31:07 | dom96 | http://build.nimrod-code.org/docs/os.html#122 |
22:31:14 | dom96 | A warning is in the docs :P |
22:31:54 | dom96 | But it should mention that memory allocs can cause this. |
22:31:54 | Araq | dom96: ok but we need an example that triggers this issue |
22:32:45 | * | BitPuffin quit (Ping timeout: 272 seconds) |
22:32:50 | Araq | actually it shows this "return value == -1 and get error code from somewhere then" is a stupid design |
22:33:13 | Varriount | What's a better design? |
22:33:21 | Araq | things would be much easier if it would simply return an error code instead |
22:33:37 | dom96 | The fix is simple. Just make the allocator reset the error code. But yeah yeah, it's a performance problem. |
22:34:01 | Araq | dom96: no it also was a dependency issue iirc |
22:34:30 | Araq | so it wouldn't work on win95 anymore or something |
22:34:50 | Varriount | Araq, I doubt there are many companies out there using win95 |
22:35:07 | Varriount | Possibly Windows 2000 |
22:35:10 | Araq | I'm sure we would find out some poor soul used it on win95 without any problems but now it broke his code |
22:35:34 | dom96 | Does the compiler ever work on Win 95? |
22:35:37 | dom96 | *even |
22:35:50 | Araq | it works on win xp, I check from time to time |
22:35:59 | Araq | dunno about win95 |
22:36:02 | dom96 | Win XP is a long way from Win 95 |
22:36:20 | Varriount | Anyway, back to matter at hand... why is it saying that the socket is not a socket? |
22:36:56 | dom96 | Araq: I need to go to sleep soon, so please help me debug this. |
22:37:07 | Araq | Varriount: you should also run it with -d:useSysAssert -d:useGcAssert |
22:37:17 | Araq | dom96: I'm already sleeping |
22:37:58 | Varriount | dom96, Sleeping at 6:30 pm? |
22:38:02 | dom96 | Araq: So you won't help me then? |
22:39:00 | Araq | print x->Sup->cap |
22:39:11 | Araq | er |
22:39:15 | Araq | print x->Sup->reserved |
22:39:33 | dom96 | 66 |
22:40:43 | * | ltbarcly joined #nimrod |
22:40:59 | Araq | seqShallowFlag has been miscompiled for your cpu I think |
22:41:17 | Araq | it produces some int64 literal in the C code. It shouldn't |
22:41:41 | Araq | it needs to produce an int32 literal on a 32bit cpu |
22:41:53 | dom96 | ok, so where is that set? |
22:42:04 | Araq | system.nim |
22:42:08 | Araq | line 852 |
22:45:36 | Araq | try: seqShallowFlag = 0b1000_000_000_000 instead |
22:45:50 | Araq | that's not the same, but might circumvent the bug |
22:46:12 | dom96 | well I just echo'd what it is: 2147483648 |
22:46:46 | Araq | ok |
22:46:49 | Araq | this is wrong |
22:46:59 | Araq | and now I can see why :P |
22:47:22 | Araq | stupid compiler performing arithmetic with 64 bits |
22:48:23 | Araq | make it seqShallowFlag = low(int) please |
22:48:30 | Araq | and see what that echos |
22:48:58 | dom96 | segfaults with your suggestion above ^^ just FYI |
22:49:16 | Araq | it will continue to segfault |
22:49:25 | Araq | but seqShallowFlag is wrong anyway |
22:50:45 | dom96 | low(int) = -2147483648 |
22:51:32 | Araq | good that's much better |
22:54:31 | * | Bosc0p quit (Quit: Bosc0p) |
22:55:36 | dom96 | so when will it not segfault? :P |
22:57:07 | * | io2 quit () |
22:57:58 | Araq | finding bugs in code that is stable on lots of machines is not easy |
22:58:23 | Araq | all the obvious bugs have been found already :P |
22:58:43 | Varriount | Don't forget the easily fixable ones! |
22:58:51 | dom96 | Do you have enough info to fix it now? |
22:59:11 | Varriount | Or enough info for dom96 to fix it now? |
22:59:12 | Araq | lol no way |
22:59:40 | Araq | all I can say is: edit lib/system/excpt.nim |
22:59:47 | Araq | cut features until it "works" |
22:59:56 | Araq | and see what you left out |
23:00:03 | * | dom96 sighs |
23:00:16 | Varriount | dom96, tis is the life of a programmer. |
23:00:19 | Araq | it writes to a 2K buffer |
23:00:20 | dom96 | Here I thought it was just as simple as changing that flag :\ |
23:00:41 | Araq | there is no chance the 2K buffer is not big enough for your stack trace |
23:00:47 | dom96 | Varriount: It's all worth it in the end ... maybe. |
23:00:49 | Araq | so it already never reallocs |
23:01:10 | Araq | also addChar has been tested millions of times |
23:01:30 | Araq | etc. etc. it's not easy |
23:01:38 | Araq | and I'm sleeping already |
23:01:46 | * | ltbarcly quit (Quit: Computer has gone to sleep.) |
23:02:00 | Varriount | dom96, just keep this is mind. If you can slay this bug, the path for nimrod support on cellphones is cut that much wider. |
23:02:03 | dom96 | yeah. We'll pick up where we left off tomorrow. |
23:02:18 | Araq | yeah, good night |
23:02:25 | Varriount | Good night. |
23:02:26 | dom96 | Varriount: true |
23:02:46 | * | ltbarcly joined #nimrod |
23:03:29 | dom96 | Varriount: You can try using select manually and seeing if it works. |
23:04:06 | Varriount | dom96, Isuspect it's a integer bug |
23:04:24 | Varriount | Because of how nimrod int's aren't 32 bits on win64 |
23:04:46 | Varriount | Thats what caused the last NOTSOCK error |
23:04:59 | dom96 | nimgrep for "int" then |
23:05:19 | Varriount | It only appears about 1000+ times. :p |
23:05:35 | Varriount | pointer, int, integer, int32, etc |
23:11:32 | dom96 | well have fun |
23:11:35 | dom96 | I'm away to sleep |
23:11:36 | dom96 | bye |
23:15:52 | * | ltbarcly quit (Quit: Computer has gone to sleep.) |
23:17:18 | * | Amrykid quit (Excess Flood) |
23:17:49 | * | Amrykid joined #nimrod |
23:21:31 | * | silven quit (Ping timeout: 272 seconds) |
23:23:52 | * | silven joined #nimrod |
23:37:29 | * | BitPuffin joined #nimrod |
23:50:40 | * | dsrw joined #nimrod |
23:52:47 | * | dsrw quit (Remote host closed the connection) |
23:53:30 | * | q66 quit (Quit: Leaving) |
23:54:21 | * | dsrw joined #nimrod |
23:58:06 | * | dsrw left #nimrod (#nimrod) |
23:58:25 | * | dsrw joined #nimrod |